次のシナリオを参照して、ファイルを作成し、コンテンツを追加し、検索して置き換えます。

$ touch testing.txt
$ echo "this is mkyong.com" > testing.txt
$ cat testing.txt
this is mkyong.com
$ sed -i 's/mkyong/google/g' testing.txt
sed: 1: "testing.txt": undefined label 'esting.txt'

この `sed -i ‘s/mkyong/google/g’ testing.txt`コマンドはLinuxでは正常に動作していますが、Mac OS Xでは”

undefined label

“というエラーメッセージが表示されます。

解決策

`sed`コマンドはMac OS Xでは少し違っています.’i ‘オプションは、バックアップファイルにどの拡張子を追加するかを指定するパラメータを必要とします。

これを修正するには、バックアップファイルの拡張子を追加するだけです(例: ‘.bak’)。

$ sed -i '.bak' 's/mkyong/google/g' testing.txt
$ ls -ls
8 -rw-r--r--  1 mkyong  staff  19 Aug  2 14:22 testing.txt
8 -rw-r--r--  1 mkyong  staff  19 Aug  2 14:21 testing.txt.bak
$ cat testing.txt
this is google.com
$ cat testing.txt.bak
this is mkyong.com