2017-04-24 12 views
1

sed -i -esed -ieの違いは何ですか? それは、いくつかのバックアップファイルを作成する第2のケースで助け sed --help`sed -i -e`と` sed -ie`の違いは何ですか?

-e script, --expression=script 
       add the script to the commands to be executed 

から非常に明確ではありませんか?

一般に、Unixのutilsではフラグを組み合わせることはできません。

何が起こっているかを示すための単なる例:

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はあまりにも動作しますので。

+1

違い?何もない。 '-i -e'または' -ie'を使うことができます(特に 'ie'として定義されているオプションがない限り)。式が' -i'に続く限り、 'e'を完全に取り除くことができます。 –

+0

@ DavidC.Rankin更新の例を参照してください。 – mrgloom

+0

確かに ':)'と表示されているようですが、satの答えを見てください。 '-i'に続くものは、元のファイルにバックアップとして追加する拡張機能とみなされます。通常、 '-i.bak'を使ってオリジナルを' file.txt.bak'として保存します。 –

答えて

4

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

しかし、あなたはsed -ieを与え、sedeとしてsuffix-iオプションを見ています。それがeという接尾辞付きのファイルバックアップを持っている理由です。 man sedから

-i [SUFFIX]、--in-場所[= SUFFIX]

編集ファイルの代わりに(サフィックスが提供されている場合、バックアップを作る)は何

1

オプション-iは、使用しているファイルをインプレースで変更することを意味します。さもなければ、sedは何の変更が行われたかを示します。 -i(たとえば-i.bck)の後に接尾辞を追加すると、入力ファイルがバックアップされ、指定された接尾辞が追加されます。

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

+0

私の例で '-e'が何をしているのかまだ分かりません。' sed -i 'は:bla:blakva:g' 1.txt'も働いています。 – mrgloom