web-dev-qa-db-ja.com

`sed -i -e`と` sed -ie`の違いは何ですか?

sed -i -esed -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が何をしているのかまだわかりません。

8
mrgloom

sed -i -eを指定すると、sedには2つのオプションが表示されます。

ただし、sed -ieを指定すると、sedsuffixeとしてのみ-iオプションを認識します。これが、eサフィックスが付いたファイルバックアップを取得した理由です。

man sedから:

-i [SUFFIX]、-in-place [= SUFFIX]

ファイルを適切に編集します(SUFFIXが提供されている場合はバックアップを作成します)

7
sat

オプション-iは、sedしているファイルをインプレースで変更することを意味します。それ以外の場合、sedはどのような変更が行われたかを示します。 -iの後にサフィックスを追加すると(例:-i.bck)、入力ファイルがバックアップされ、提供されたサフィックスが追加されます。

オプション-eを使用すると、コマンドライン引数の代わりにsedスクリプトを提供できます。

3
jehutyy