2012-09-29 39 views
1

我在sed上遇到了一些麻煩。什麼是正確的方式來提取模式?
例如下面的回報world,我希望它返回只是wsed只提取圖案

echo "hello world" | sed -n 's|hello \(w\)|\1|p'

+1

你的模式符合'hello world'中的'hello w'。只有那個匹配纔會被替換爲'w'。 – Gumbo

回答

2

你忘了匹配& REPLACE(刪除)w後的文字:

echo "hello world" | sed -n 's|hello \(w\).*|\1|p' 
3

你可以更好的使用這條路。

回聲「hello world」| sed -r's /.+(w)。*/\ 1 /'

這將只提取w字符。 -r選項是擴展正則表達式。所以我們不使用轉義「\」特殊字符。
。匹配任何單個字符。 *星號將匹配零個或多個匹配項。 + plus將匹配一個或多個匹配項。 ()這是使用此分組方法,您可以取回引用。用來代替方法的是 。

+0

'-r'被gnu sed識別,但有很多'sed'不接受這個選項。 –

1

sed命令如果匹配任何字符串如果在第一個字符匹配只有第二字

SED的/([AZ]。*)([AZ])。*/\ 2 /'inputfile中