2016-07-26 14 views
3

sedを使用してmysqlダンプの10進値の前後に引用符を追加しようとしています。Sedを使用してMySQLdumpに引用符を追加

INSERT INTO .... 'LastName', 1356.183); 

私は引用符で(この場合は1356.183で)最後の値をカプセル化しようとしています、次のようになります:これまでのところ、私が試してみました

INSERT INTO .... 'LastName', '1356.183'); 

行は以下のフォーマットに従ってください運がない次のsedコマンドのバリエーション:

sed -i '.bak' "s/, \(\d+.\d+\))/, '\1')/g" test.txt 

私は正規表現の使用を推奨しますか?ありがとうございました!

+0

'sed -i '.bak'" s/\(\ d +。\ d + \)/ '\ 1'/g "test.txt"を試してください –

+0

なぜ数字を引用する必要がありますか? 'INSERT'は引用符の有無にかかわらずうまく動作するはずです。 –

答えて

0

+は、デフォルトでsedがサポートするBREではなく、+がEREメタ文字であることを認識します。ただ、代わりに\d[0-9]を使用して、POSIXでのEREのメタ文字としてそれをアクティブにする+を逃れるのsed:

$ sed 's/[0-9]\+\.[0-9]\+/'\''&'\''/' file 
INSERT INTO .... 'LastName', '1356.183'); 

は、私もそれがメタ文字のプロパティをです無効にする.を逃れ、そしてあなたが予想外につまずく避けるために、(引用固定結果、スクリプトの前後に二重引用符を使用する - 一重引用符を使用して終了させて​​ください。のみ、シェルを展開できる必要があります。例えばsed 's/'"$var"'/whatever/'ではなくsed "s/$var/whatever/"です。

関連する問題