2016-03-01 76 views
0

鑑於輸入text.txt文件脫節的SED順序相匹配

First token second pattern, second pattern. 

運行:

sed -r -i "s/pattern|second pattern/REPLACE/g" input.txt 

我得到新的input.txt中:

First token REPLACE, REPLACE. 

它看起來像這裏首先應用second pattern以匹配input.txt的內容。

sed中的disjuctions與sed中的輸入文本匹配的順序是什麼?

有沒有一種方法可以指定應該使用匹配不連續的順序,它與-i內聯命令一起工作?

+2

經驗法則是'最左最長匹配' - 首先開始的匹配,以及多個選項中最長的匹配。由於「第二種模式」出現在「模式」之前,所以這兩個詞總是會被首先替換。 –

回答

2

不知道到底是什麼sed的正則表達式引擎與交替(|)運營商,但要獲得你想要的結果的一種方式做可能會分成兩個正則表達式語句在sed:

sed -r -i "s/pattern/REPLACE/g;s/second pattern/REPLACE/g" 

這應該讓您明確控制應用替換的順序,而所有仍在發生的sed調用中,這些調用與就地編輯(-i)的效果很好。