カンマ区切りのcsvファイルがある。
金額の区切りもカンマになってしまっていてawkで扱いにくい。
金額の区切りのカンマだけ無くしたい。
1行目で言えば ¥8,163 を ¥8163 にしたい。
/¥[1-9], とやってキャプチャできるけど、一括置換ではフィールド区切りとしてのカンマまで置き換わってしまう。
こういうときはホールドバッファという機能を使えばよいらしい。
vim (vi) でマッチした文字列の一部を置換 | Mazn.net
置き換えられる部分だけを丸カッコでくくる(ホールドする)したうえでそれを \1 で受けて置き換えに使える。
:%s/\(¥[1-9]\),/\1/g
見事に金額の間のカンマだけを消すことができた。
同様に
:%s/\(¥[1-9][0-9]\),/\1/g
とやれば、例えば1行目で言えば 21,500 を 21500 に置き換えすることができる。
vim 最高。
追記)カンマのうしろに数字がくる場合のみ置き換えるよう改良
8,163 → 8163
%s/\(¥[1-9]\),\([0-9]\)/\1\2/g
21,500 → 21500
%s/\(¥[1-9][0-9]\),\([0-9]\)/\1\2/g
590,000 → 590000
%s/\(¥[1-9][0-9][0-9]\),\([0-9]\)/\1\2/g
1279,000 → 1279000
%s/\(¥[1-9][0-9][0-9][0-9]\),\([0-9]\)/\1\2/g