sed -i -e
とsed -ie
の違いは何ですか?ヘルプからはあまり明確ではありませんsed --help
-e script, --expression=script
add the script to the commands to be executed
2番目のケースでは、いくつかのバックアップファイルを作成しますか?
一般に、Unixユーティリティはフラグを組み合わせることができませんか?
何が起こっているかを示すための単なる例:
echo "bla" > 1.txt
cat 1.txt
bla
sed -i -e 's:bla:blakva:g' 1.txt
cat 1.txt
blakva
sed -ie 's:bla:blakva:g' 1.txt
cat 1.txt
blakvakva
*Note: also 1.txte is created, containing
cat 1.txte
blakva
また、-e
も機能するため、私の例ではsed -i 's:bla:blakva:g' 1.txt
が何をしているのかまだわかりません。
sed -i -e
を指定すると、sed
には2つのオプションが表示されます。
ただし、sed -ie
を指定すると、sed
はsuffix
をe
としてのみ-i
オプションを認識します。これが、e
サフィックスが付いたファイルバックアップを取得した理由です。
man sed
から:-i [SUFFIX]、-in-place [= SUFFIX]
ファイルを適切に編集します(SUFFIXが提供されている場合はバックアップを作成します)
オプション-i
は、sedしているファイルをインプレースで変更することを意味します。それ以外の場合、sed
はどのような変更が行われたかを示します。 -i
の後にサフィックスを追加すると(例:-i.bck
)、入力ファイルがバックアップされ、提供されたサフィックスが追加されます。
オプション-e
を使用すると、コマンドライン引数の代わりにsedスクリプトを提供できます。