いまさらながらに知った驚愕の事実。知っている人にとっては当たり前なんだろう。
sedの-iオプションで置換結果をファイルに直接上書きできる。
たとえば、こう。
$ cat dummy.txt
1週間
1週間
一週間
$ sed -i -e 's/[11一]週間/1週間/g' dummy.txt
$ cat dummy.txt
1週間
1週間
1週間
で、本チャンで上書きする前にはたいていバックアップとると思う。
実はこれ、cp打たなくともsedだけで簡潔しちゃいます。
$ sed -i.bak -e 's/[11一]週間/1週間/g' dummy.txt
$ diff -u dummy.txt{.bak,}
--- dummy.txt.bak 2016-02-28 19:32:24.625114987 +0900
+++ dummy.txt 2016-02-28 19:34:32.087118497 +0900
@@ -1,3 +1,3 @@
1週間
-1週間
-一週間
+1週間
+1週間
なんと、-iオプションに続いてバックアップファイルの接尾名を付けるだけ。
奥深し。