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

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

気に入ったらシェアお願いします!

この記事を書いた人

こんにちは!カノといいます👓
インターネットやテクノロジー、ビジネスモデルや歴史(世界史・日本史)、美術などが好きです。メガネのせいか真面目っぽく見えるらしいですが、基本的には昔からいい加減な性格です。
このブログは昔からずっと個人的な日記みたいな感じで書いてきていて、基本的には個人的なログになりますが、興味のあるところだけ読んでいただけるとうれしいです。コメントやTwitterのフォローなどは大歓迎です。

コメント

コメントする

目次