MacOSのsed
は-i
オプションのあとに空文字を指定しても(-i''
)in-place(上書き)にしつつバックアップファイルは作らないみたいな動作はできない。
sed -i'' -e 's/foo/bar/' test.txt
するとtest.text-e
というファイルができて辛い。ちなみに''
がなくてもだめ
対してperl
は
perl -i -pe 's/foo/bar/' test.txt
で期待した挙動になる。
やっぱperlやな!とおもったら
sed -i '' -e 's/foo/bar/' test.txt
のようにスペースを空けると上書きしつつバックアップは取らないとう挙動になる。
-i extension Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved. It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is exhausted, etc.
特にマニュアルにはスペース開けろって書いてない気がする。-i'.backup'
がいけるのでいけると思ってた。
なにはともあれsed
には後で謝っておこうと思いました。
年内には埋めたいという気持ちでやってます。