2017-04-08 49 views
0

我剛開始嘗試使用sed,並沒有真正瞭解如何匹配捕獲工作:如果我有這樣的代碼來捕獲兩個詞sed 's/\([a-z]*\).*\([a-z]*\).*/\1 \2/'爲什麼不是捕獲的第二個詞?捕獲sed的匹配

編輯1:比方說,我有這樣的字符串:「棕色的狐狸跳過懶惰的狗」。我想SED匹配「棕色」,但它只匹配的第一個字

+0

給我們的字符串(或)針對上述'sed'命令沒有工作 – Inian

+2

輸入文件''是貪婪的..它會嘗試儘可能匹配..和而整個表達式匹配時,優先選擇表達式首先匹配......並且由於'*'表示零匹配或更多匹配,所以'。*'或'[az] *'爲空是完全可以的 – Sundeep

+1

替換'。*'中的空格字符...'sed's/\([az] * \)* \([az] * \)。*/\ 1 \ 2 /'' – Sundeep

回答

1

(報價森迪普•,只是爲了讓一個Q/A對。)

用空格字符替換圓點.* ...

sed 's/\([a-z]*\) *\([a-z]*\).*/\1 \2/' 
+0

爲了更好的回溯安全性,請使用'{1,}'而不是'*'。我希望這不是延伸。 – Yunnosch