2008年2月12日火曜日

grepでマッチした行だけ取り除くスクリプト

SubversionのDateタグって、意図しない文字コードの日付に置換されてしまい、予測不能な問題を生じてしまうことが多かった取り除くことにしました。

そこで、一行プログラミング。
for f in $(grep -n  "\$Date" src/**/*.java | cut -d ':' -f 1);
  do echo $f; grep -v "\$Date" $f > $f.tmp; mv $f.tmp $f; done;

もっと賢い方法や、こういう時に便利なコマンドがあったら教えてくださいな。

3 件のコメント:

おーくら大臣 さんのコメント...

お久しぶりです。おおくらです。
grep -vとかいかがでしょう?

leo@chronicle.org (Leo) さんのコメント...

> おーくら大臣さん
お久しぶりです。
上のスクリプトには、既にgrep -vを使っているのです。ファイルをin-placeで更新できるコマンドってあるのかなぁ、と。

匿名 さんのコメント...

mkasaです。perl -pe 's/^$Date.*\n//' -i src/**/*.java

License

Creative Commons LicenseLeo's Chronicle by Taro L. Saito is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License.