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 の後に “” を入れるとちゃんと動作した。