हमारे स्रोत कोड में त्रुटि कोड पूरे बिखरे हुए हैं। उन्हें ढूंढना grep के साथ आसान है, लेकिन मैं एक बश फ़ंक्शन चाहता हूं, 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 स्रोत फ़ाइलों से मेल खाता है। मुझे सी। सी।, .Cs, .cpp और अन्य स्रोत फ़ाइलों से मिलान करने में समस्या हो रही है। हम C का उपयोग करते हैं, हालाँकि, बस मिलान - या: (वर्ण जो कोड के प्रत्येक पंक्ति से पहले grep फ़ाइल नाम में जोड़ता है) मेल खाता है object->pointers
और सब कुछ गड़बड़ कर देता है।
MATCH="= ${1}"
। मैंने--include=*.c --include=*.cpp --include=*.java --include=*.cs
खोज को स्रोत फ़ाइलों तक सीमित करने के लिए भी जोड़ा । धन्यवाद!