sedコマンドがMac OS Xで「未定義ラベル」エラーを表示する
次のシナリオを参照して、ファイルを作成し、コンテンツを追加し、検索して置き換えます。
$ 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