grep
このタイプの文字列を見つけるために TextWrangler を使用しています。
4,600.00
私の正規表現コマンドは次のとおりです。
\d.\d{3}.\d{2}
文字列を正しく見つけているようです。データをファイルに保存したいので、文字列4,600.00
を置き換えたいと思います。見つかった各数字からカンマを削除するにはどうすればよいですか?4600.00
.csv
探す:(\d{1,3}),(\d{1,3})\.(\d{1,2})
交換:\1\2.\3
TextWrangler で動作します。
awkワンライナー:
awk --re-interval '{x=gensub(/([0-9]{1,3}),([0-9]{3}\.[0-9]{2})/,"\\1\\2","g");print x}' file
テスト:
kent$ awk --version|head -1
GNU Awk 3.1.6
kent$ echo "foo,bar,blah,46,000.00,some,more"|awk --re-interval '{x=gensub(/([0-9]{1,3}),([0-9]{3}\.[0-9]{2})/,"\\1\\2","g");print x}'
foo,bar,blah,46000.00,some,more
を使用した片道sed
:
sed -r 's/([0-9]{1,3}),([0-9]{3}\.[0-9]{2})/\1\2/g' file.txt
フラグを追加-i
して、変更をファイルに直接書き込むことができます。