У нашому вихідному коді є коди помилок, розкидані по всьому. Знайти їх легко за допомогою grep, але я хотів би find_code
виконати функцію bash, яку я можу виконати (напр. 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 вихідним файлам. У мене виникають проблеми з підключенням sed до файлів .c, .cs, .cpp та інших вихідних файлів. Ми, однак, використовуємо C, тому просто збігаємося - або: (символи, які grep додають до імені файлу перед кожним рядком коду), відповідають object->pointers
і переплутують все.
MATCH="= ${1}"
. Я також додав,--include=*.c --include=*.cpp --include=*.java --include=*.cs
щоб обмежити пошук вихідних файлів. Спасибі!