2010年10月14日木曜日

sed ファイル置換+バックアップ

簡単な文字列置換には手軽さゆえ sed を使ってしまう。

ファイルの中身を置換する場合、リダイレクトでテンポラリファイルを作って mv するという手順を踏んでいたが、これは無駄。オプション -i を使うことによりファイルをsedだけで(in placeに)置換できるのだった。

$ sed --help
...
  -i[SUFFIX], --in-place[=SUFFIX]
                 edit files in place (makes backup if extension supplied)

ヘルプに記述されているように、"-i"の直後にextension(拡張子)を指定すればバックアップファイルも自動生成される。

バックアップ不要のとき
sed -i 's/foo/bar/g' /tmp/baz.txt
拡張子".orig"でバックアップをとる
sed -i.orig 's/foo/bar/g' /tmp/baz.txt
応用:findと組み合わせる
find . -type f -name '*.txt' -exec sed -i.orig 's/foo/bar/g' {} \;

0 件のコメント:

コメントを投稿