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 件のコメント:

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

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

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

    返信削除