sed コマンドで上書き保存(macOS)

macOSだと、sed コマンドで上書き保存できない

sedコマンドで文字を置換して上書き保存するように「sed -i 's/置換前/置換後/g’ (ファイル名)」とコマンドをうっても以下のようにエラーになります

$ echo "aaa" > hoge.txt
$ sed -i "s/aaa/xxx/g" hoge.txt
sed: 1: "hoge.txt": extra characters at the end of h command

$ echo "aaa" > test.txt
$ sed -i "s/a/x/g" test.txt
sed: 1: "test.txt": undefined label 'est.txt'

sed コマンドで上書き保存する場合のオプション

「sed -i 〜〜」だと、置換後に上書き保存ができません。上書き保存するには「sed -i -e 's/置換前/置換後/g’ (ファイル名)」と「-i -e」とオプションを使用すればできます

$ echo "aaa" > test.txt
$ sed -i -e "s/aaa/xxx/g" test.txt
$ cat test.txt
xxx

または、「-i」のあとに「””」をつけて、「sed -i “" -e 's/置換前/置換後/g’ (ファイル名)」とすれば、エラーなく上書き保存ができます
$ echo "aaa" > hoge.txt
$ sed -i "" "s/aaa/xxx/g" hoge.txt
$ cat hoge.txt
xxx

 

スポンサーリンク