2017-04-24 141 views
1

sed -i -esed -ie和有什麼不一樣? 這不是從幫助 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看到兩個選項。

但是,當你給sed -iesed看到-isuffixe選項。這就是你用e後綴獲得文件備份的原因。

man sed

-i [SUFFIX],--in就地[= SUFFIX]代替

編輯文件(使備份,如果供給SUFFIX)

1

選項-i意味着它在原地修改您正在關閉的文件。否則sed只顯示做了什麼修改。如果您在-i(例如-i.bck)之後添加後綴,它將備份您的輸入文件,然後添加提供的後綴。

選項-e允許您提供sed腳本而不是命令行參數。

+0

不知道在我的例子中'-e'在做什麼,因爲'sed -i's:bla:blakva:g'1.txt'也能工作。 – mrgloom