2014-01-27 75 views
0

我嘗試了幾個命令並閱讀了一些教程,但沒有任何幫助。我正在使用gnu sed 4.2.2。 我只是想在一個文件中搜索:如何使用sed搜索文件的內容

func1(int a) 
{ 

我不知道這是否是一個換行符,隨後的事實「{」,但它只是不工作。 一個正確的命令將有助於解釋更多。謝謝!

注意:在「int a」之後「我輸入」,但我認爲stackoverflow沒有放置換行符。我不想混淆,我只想搜索func1(int a)'newline'{。

+0

你只是想找到字符串,或將其替換?如果只是找到,我建議看看http://en.wikipedia.org/wiki/Grep。 – Martin

+0

嗨馬丁,的確我只是想找到。但是我看不出grep如何幫助換行,然後是「{」。如果你能舉一個命令行的例子,我會很享受,因爲我真的無法弄清楚。 – user3241815

+0

試試這裏:http://stackoverflow.com/questions/3717772/regex-grep-for-multi-line-search-needed – Martin

回答

3

sed -n '/func1/{N;/func1(int a)\n{/p}'

說明:

sed -n '/func1/{       # look for a line with "func1" 
       N      # append the next line 
       /func1(int a)\n{/p  # try to match the whole pattern "func1(int a)\n{" 
             # and print if matched 
       }'       

使用grep這將是例如:

grep -Pzo 'func1\(int a\)\n{' 

但是請注意,由於-z輸入到grep將是一個大的 「線」也包括換行符(即除非輸入包含空字符)。括號在這種情況下必須被轉義,因爲它是一個Perl正則表達式(-P)。 -o使grep只打印匹配的模式。

+0

+1,並使其一般匹配:sed -n'/ func1/{N;/func1([^)] *)\ s * \ n \ s * {/ p}'文件 – BMW