2016-11-04 18 views
0

我目前被困在一個場景中,我需要打印匹配的模式,後面跟着包含不同值的括號。例如:如何打印匹配的圖案,然後是包含一些值的括號?

echo "abc(123) += abc(245678) ^%$&** abc(3)" | grep -o 'abc(.*)' 

給出了整條線。

我想要的O/P爲僅僅:

abc(123) 
abc(245678) 
abc(3) 

我知道在grep -o 'abc(.*)',閉合托架被取爲在該行的最後一個托架,因此打印整行。

我試圖找出某種方法來找到相應的開放括號的結束括號的位置,但無法找出。請幫助我。

回答

3

您必須使用[^)](否定)匹配。喜歡這個。

echo "abc(123) += abc(245678) ^%$&** abc(3)" | grep -o 'abc([^)]*)' 

如果列表中的第一個字符是尖^那麼它匹配任何字符不在列表中。

+0

謝謝週六。它正在工作。 –

+0

@amitkumar,很高興爲你工作。既然你是新來的,如果你的問題已經解決了,請不要忘記標記答案。您可以點擊答案旁邊的複選標記將其從空心切換爲綠色。如果您有任何問題,請參閱[幫助中心](http://stackoverflow.com/help/someone-answers)。 – sat

相關問題