スポンサーリンク

sedのsコマンドで置換して、-iオプションでファイル上書き

※MACターミナル(BSD系)での動作確認です。
ただし、gsedをインストールして、aliasでalias sed='gsed'としています。
参考:MacとLinuxでは、sedの動作が異なるので注意

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
find awk grep find
ls cat find
diff

下記のように、findをafterに置換して、-iオプションで上書きします。
 $ sed -i s/find/after/g in.txt 

下記が実行結果になります。
 $ cat in.txt 
after awk grep after
ls cat after
diff

スポンサーリンク

sedでバックアップファイルを作成

-iオプションの直後にバックアップファイルの拡張子を指定します。
下記は、.bakの拡張子でバックアップファイルを作成しています。

 $ sed -i.bak s/after/find/g in.txt 

下記が実行結果になります。
 $ cat in.txt
find awk grep find
ls cat find
diff

下記が、バックアップファイルになります。
 $ cat in.txt.bak 
after awk grep after
ls cat after
diff

find xargs sed でカレントディレクトリ以下を再帰的に置換

find xargs sed の組み合わせもよく使いますね。
下記は、カレントディレクトリ以下を再帰的に、ter を after に置換します。

$ find . -type f | xargs gsed -i.bak s/ter/after/g

スポンサーリンク