#FJMK blog

citrus+というバンドをやってます。 http://citrusplus.jp 平日昼間はインターネットの会社@紀尾井町でエンジニアやってます。

Macでsedコマンドが思うように動かなくてハマった

というメモ。

とあるディレクトリ以下の.gitディレクトリを除いた全ファイル内の
stringA
という文字列を
stringB
という文字列に置換したい場合、
Linuxだと

$grep -lr stringA * | grep -v '.git' | xargs sed -i 's/stringA/stringB/g'

のようにすれば置換できるはずだが、Mac上で打ったら

$ grep -lr stringA * | grep -v '.git' | xargs sed -i 's/stringA/stringB/g'
sed: 1: "testfile": undefined label 'estfile'

こんな風にエラーが出てうまくいかなかった。

しばらくハマったが、

$grep -lr stringA * | grep -v '.git' | xargs sed -i "" 's/stringA/stringB/g'

このように -i の後に “” を入れるとちゃんと動作した。

Linuxコマンド集 - 【 sed 】 文字列の置換,行の削除を行う:ITpro