sedでファイルの中身を直接置換する

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

と、こんな感じになります。

コメント

コメントする

目次