桜ヶ丘日記

技術メモとかとか

linuxとbsdでsedの-iオプションの必要な引数が違う

↓参考:linuxの場合

linux$ grep hoge *
hoge0.txt:hoge fuga piyo
hoge1.txt:hoge fuga piyo

linux$ sed -i s/piyo/boeee/g * && grep hoge *
hoge0.txt:hoge fuga boeee
hoge1.txt:hoge fuga boeee


↓BSDだとこうなる

bsd$ grep hoge *
hoge0.txt:hoge fuga piyo
hoge1.txt:hoge fuga piyo

bsd$ sed -i s/piyo/boeee/g * && grep hoge *
sed: 1: "hoge0.txt": extra characters at the end of h command

ええーーー?!
となってman sed読んだ

bsd$ sed -i .foo s/piyo/boeee/g * && grep hoge *
hoge0.txt:hoge fuga boeee
hoge0.txt.foo:hoge fuga piyo
hoge1.txt:hoge fuga boeee
hoge1.txt.foo:hoge fuga piyo