소스 코드에는 오류 코드가 흩어져 있습니다. grep으로 쉽게 찾을 수 있지만 다음 줄을 따라 출력을 제공 하는 bash 함수 find_code
를 실행 하고 싶습니다 (예 :).find_code ####
/home/user/path/to/source.c
85 imagine this is code
86 this is more code
87 {
88 nicely indented
89 errorCode = 1111
90 that's the line that matched!
91 ok this block is ending
92 }
93 }
여기 내가 현재 가지고있는 것입니다 :
find_code()
{
# "= " included to avoid matching unrelated number series
# SRCDIR is environment variable, parent dir of all of projects
FILENAME= grep -r "= ${1}" ${SRCDIR}
echo ${FILENAME}
grep -A5 -B5 -r "= ${1}" ${SRCDIR} | sed -e 's/.*\.c\[-:]//g'
}
문제 :
1) 이것은 줄 번호를 제공하지 않습니다
2) .c 소스 파일과 만 일치합니다. .c, .cs, .cpp 및 기타 소스 파일과 일치하도록 sed를 얻는 데 문제가 있습니다. 우리는 C를 사용하므로 단순히 일치하는-또는 : (grep이 각 코드 줄 전에 파일 이름에 추가하는 문자)가 일치 object->pointers
하고 모든 것을 엉망으로 만듭니다.
MATCH="= ${1}"
. 또한--include=*.c --include=*.cpp --include=*.java --include=*.cs
검색을 소스 파일로 제한하기 위해 추가 했습니다. 감사!