2012-06-01 44 views
2

我想在Bash中編寫一行,獲取給定URL的Content-Type(無編碼)。 Thisi是我到目前爲止有:sed匹配比預期的貪婪

curl -Is http://www.google.com | sed -nr 's/^Content-Type: ([^;]*)/\1/Ip' 

然而,這仍然是印刷text/html; charset=ISO-8859-1並不僅僅是text/html。第一個分號後不應該([^;]*)停止比賽?

回答

3

你想要的是:

curl -Is http://www.google.com | sed -nr 's/^Content-Type: ([^;]*).*/\1/Ip' 

匹配組後,基本上添加.*使文本之後的部分/ HTML;將不會被輸出。

+2

如果在行尾使用*,EOL錨是否真的必要? –

+0

不是。無論如何,它會匹配直到結束,你是正確的。 –

+1

閱讀這個問題,我犯了同樣的錯誤,但現在我認爲我理解了答案。這種模式確實符合任何一種方式,但答案者的模式明確地匹配整條線。因此,回答者的模式明確*取代了整條線。 OP的模式不適用於後者。 – thb