LoginSignup
11
12

More than 5 years have passed since last update.

sedだけでバックアップをとりつつ安全に上書き置換する

Posted at

いまさらながらに知った驚愕の事実。知っている人にとっては当たり前なんだろう。

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オプションに続いてバックアップファイルの接尾名を付けるだけ。
奥深し。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12