2013-07-08 71 views
5

這是一個bug還是有解釋?Sed命令 - 選項標記的順序很重要? (-ir vs -ri)

請注意,我不是在尋找的解決方法,而是爲什麼-ir-ri事項的順序...


試想存儲在文件中以下數據data.txt

1, StringString, AnotherString 545 
2, StringString, AnotherString 723 
3, StringString, AnotherString 610 
4, StringString, AnotherString 118 
5, StringString, AnotherString 482 

所需的字符串轉換

Replace "StringString" with "Strung" 

用下面的代碼

sed -ir 's/String+/Strung/g' data.txt <-- won't work 

sed -ri 's/String+/Strung/g' data.txt <-- will work 

我看不出有任何理由選項標誌的順序會事?任何解釋?

圖片的標題說明:開關-i「編輯代替文件」,同時允許-r「擴展 正則表達式」(允許+操作者)。在Ubuntu 12.10上運行sed 4.2.1 2010年12月。

回答

3

在做-ir時指定「r」應該是備份文件的後綴。

如果你需要它們,你應該可以做-i -r

5

您查過sed --help or man sed

-i[SUFFIX], --in-place[=SUFFIX] 
       edit files in place (makes backup if extension supplied). 
       The default operation mode is to break symbolic and hard links. 
       This can be changed with --follow-symlinks and --copy. 
+0

做!噢,我剛剛在目錄中找到了名爲「data.txtr」的文件 - 該文件是作爲備份創建的。我期待有一個空間來分開後綴,但現在它是有道理的。 – somethis