2012-09-24 230 views
0

我想爲我的noob問題事先道歉,但我想grep的c文件的函數標題。所以我試圖grep換行符「^」然後一些空格「」,然後一些字符「」然後一些空格「」,然後一些字符再次「」,然後再一些空格「 「then」(「then then number of characters」。「then」)「。grep東西空間東西()

我試圖grep -E /^(*.*)\2 *\(.*\)/ *.c

grep -E /^ *.* *.* *\(.* *.*\*\)/ *.c 
       int foo (int bar, double cow) 

,但我不認爲(和)的支持。我回來了,然後我想要。我怎麼能grep像上面和更多的功能標題。再次,我的問題與上面的grep是我回到很多結果,我得到的東西沒有()在他們。我只想要功能標題。感謝您的幫助。 BTW egrep '^[ \t]*[^ \t]*[ \t]*[^ \t]*[ \t]*[(][^ \t]*[)]' *.c

+0

你是否正在做這個代碼審查或標記?在這種情況下,您可能想要嘗試ctags,這樣做,以及更多。它還與許多編輯器和IDE接口。 – sapht

+0

它是家庭作業的一部分,我需要從c文件中抓取函數標題,這樣我就可以擁有包含所有函數聲明的頭文件。 – UniqueUsername

+0

好的。請記住,多行函數定義將不可能使用grep,只有單行匹配afaik。也許看看perl正則表達式。 – sapht

回答

0

爲您的要求做到這一點?

grep -P "^\s*[\w ]+\([^\)]*\)" 
+0

這不起作用,但它返回循環和其他東西與()像printf(bla,bla)。我想通過要求換行空間的東西,將其縮小到只是功能標題。 – UniqueUsername

0

試試這個我不鼓勵使用快捷鍵爲空白,因爲它是特定的實現。

+0

我收到消息:Badly placed()的 – UniqueUsername

+0

請嘗試egrep並將正則表達式放在引號中 – lilalinux

+0

我收到了和以前一樣的消息。 egrep/^ * [^] * * [^] * * [(] [^] * [)] * .c 放置不當()。 – UniqueUsername