sedでファイルの中身を直接置換したいときは、次のように-iオプションを使うといいみたいです。
$ sed -i s/foo/bar/ baz.txt
初めに調べたとき、manにのってなくてムキーってなったのですが、
$ export LANG=C
したら、しっかりのっていやがった。ちゃんと全部訳せ、と。
-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied)
-iに続けて拡張子を指定すると、変更対象のファイルにその拡張子をつけてバックアップをとってからファイルを変更してくれます。このへんはPerlやRubyと同じですね。
$ echo foobar > baz.txt $ cat baz.txt foobar $ sed -i.bak s/foo/bar/ baz.txt $ ls baz.txt baz.txt.bak $ cat baz.txt barbar $ cat baz.txt.bak foobar
と、こんな感じになります。
コメント