Unix iMac シェルターミナル
sed -i 's/original/new/g' maths.tx
戻りメッセージ:sed:-iはstdinでは使用できません。
答え1
Macは独自の機能を備えているsed
などのBSDバージョンのユーティリティを使用しています。date
この特定のケースでは、BSDのバージョンは次のとおりです。sed
承認するバックアップファイル拡張子はです-i
。任意に選択できる、GNUのようにsed
。
このように:
sed -i .bak 's/needle/pin/g' haystack
表示されたコマンドはファイルのすべてのインスタンスを置き換え、needle
元のファイルはそのまま残りpin
ます。haystack
haystack.bak
sed
Macの実装マニュアルから:
-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.
Linuxホストとは対照的に:
-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if SUFFIX supplied)
「長さ0の拡張」は「拡張なし」と同じではありません。これにより、バックアップを完全に回避できます。
sed -i '' 's/needle/pin/g' haystack
答え2
次のようにバックアップファイルを指定する必要があります。
sed -i .bak 's/original/new/g' maths.tx