![파일에서 함수를 추출하는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/6307/%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%ED%95%A8%EC%88%98%EB%A5%BC%20%EC%B6%94%EC%B6%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
내 코드에서 C 함수를 추출하는 명령을 찾고 있습니다. 다음과 같이 보일 것입니다:
$ grep -func "MyFunction" foo.c
int MyFunction(int i) {
return i+1;
}
정규식으로 추출할 수 있다는 것을 알고 있지만 좀 더 사용자 친화적인 방법을 찾고 있습니다.
답변1
파일의 구문이 정확하다고 가정하면 다음 형식을 사용하여 형식을 지정 indent
하고 함수를 찾고 추출하는 프로세스를 훨씬 간단하게 만들 수 있습니다.
- 를 사용하면
indent
줄의 첫 번째 열에 함수 이름을 입력하고 그 뒤에 여는 괄호를 입력한 다음 - 그 후
'}'
첫 번째 열에 나타나는 다음 닫는 중괄호가 함수를 종료합니다.
indent
다음은 GNU sum을 사용한 간단한 예입니다 awk
.
#!/bin/sh
# $1 = file name
# $2 = function name
indent -st -orig "$1" | awk '
BEGIN { state = 0; last = ""; }
$0 ~ /^'$2'\(/ { print last; state = 1; }
{ if (state == 1) print; }
$0 ~ /^}/ { if (state) state = 2; }
{ last = $0; }
'
답변2
함수 헤더만 필요한 경우 다음을 사용할 수 있습니다 ctags
.
$ ctags -x foo.c
MyFunction 1 foo.c int MyFunction(int i) {