2012-09-24 2 views
0

사전에 사과하고 싶습니다만, C 파일의 기능 표제에 grep하고 싶습니다. 그래서 나는 줄 바꿈을 grep하려고 노력 중이다. ""다음에 ""공백이 몇 개 더있다. ""다음에 다시 "" "then"(일부 문자 수 "", "다음"). grep something space something()

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

을 시도하지만 지원되는 생각 (과)하지 않습니다. 나는 내가 원하는 것보다 더 돌아온다. 위와 같은 기능 표제에 대해 어떻게 grep 할 수 있습니까? 다시 위의 grep에 대한 나의 문제는 많은 결과로 돌아 왔고 나는() 안에없는 것들을 되 찾는다. 그냥 기능 제목을 원해. 모든 도움을 주셔서 감사합니다.

+0

코드 검토 또는 태그 지정을 위해이 작업을 수행하고 있습니까? 이 경우에는 ctags를 사용하는 것이 좋을 것입니다. 또한 많은 편집기와 IDE와의 인터페이스도 제공합니다. – sapht

+0

숙제의 일부분이며 모든 기능 선언이 포함 된 헤더 파일을 가질 수 있도록 c 파일에서 기능 표제를 가져와야합니다. – UniqueUsername

+0

좋습니다. 다중 행 함수 정의는 afaik와의 단일 행 일치 만 수행하는 grep을 사용하여 실제로 불가능합니다. 어쩌면 perl 정규식을 들여다 볼 수도 있습니다. – sapht

답변

0

귀하의 요구 사항에 맞습니까?

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

이것은 작동하지만 printf (bla, bla)와 같이()를 사용하여 루프 및 기타 항목을 반환합니다. 줄 바꿈 기능을 사용하기 위해 줄 바꿈 문자를 사용하는 줄 알았습니다. – UniqueUsername

0

이 시도 : egrep '^[ \t]*[^ \t]*[ \t]*[^ \t]*[ \t]*[(][^ \t]*[)]' *.c

을 BTW : 그것은 구현 고유의 것입니다으로 나는 공백에 대한 단축키의 사용을 억제.

+0

에 줄을 추가하면 다음 메시지가 나타납니다. Badly placed()의 – UniqueUsername

+0

egrep로 시도하고 정규식을 따옴표로 붙이십시오. – lilalinux

+0

이전과 같은 메시지가 나타납니다. egrep/^ * [^] * * [^] * * [(] [^] * [)] * .c 잘못 배치되었습니다. – UniqueUsername

관련 문제