macos の sed (BSD版)で -i するとバックアップファイル作られるから注意! | クズリーマンのカス備忘録

macos の sed (BSD版)で -i するとバックアップファイル作られるから注意!

mac-photo mac
スポンサーリンク

もしかしたら GNU sedでも起きてるかも?

→起きぬ

事象

sed -i -e 

でファイルの中身置換したら以下のようなバックアップファイルが作られてた

  • ファイル名.ファイル拡張子-e (こっちは間違いない)
  • .!nnnnn(数字)!.ファイル名.ファイル拡張子 (こっちはもしかしたら違うかも?でも他に心当たりない)

元のファイル→ファイル名.ファイル拡張子

 

例えば、

元のファイル↓

  • index.php

作られたバックアップファイル↓

  • index.php-e
  • .!12345!index.php

両方とも作られた訳ではなかった。

 

原因

 

調べてみると、BSD版のsedで-iオプションするとバックアップファイルが作られるとのこと。

詳しくはqiitaの記事で。

gsed(つまり、GNU版)でやったつもりだったけど、シェルスクリプトでやったからBSD版が動いてたっぽい。

  • シェルスクリプトでやったからか
  • export LANG=C  してからやったからか

いずれかだろうけど、詳細には原因追ってない。

 

対応

バックアップファイルを消した。

 

macの話だけどGNUもあるかもだから(動作確認せえや)linuxカテゴリにしとく。

→GNUだと大丈夫でした。-iオプションを付けてsedコマンドを実行しても、バックアップファイルは作成されませんでした。

コメント

タイトルとURLをコピーしました