簡単な文字列置換には手軽さゆえ 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 件のコメント:
コメントを投稿