Kaynak kodumuzda hata kodları dağılmıştır. Bunları bulmak grep ile kolaydır, ancak bu satırlar boyunca çıktı sağlayacak olan find_code
(örneğin find_code ####
) çalıştırabileceğim bir bash işlevi istiyorum :
/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 }
İşte şu anda ne var:
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'
}
sorunlar:
1) Bu satır numaraları sağlamaz
2) yalnızca .c kaynak dosyalarıyla eşleşir. .C, .cs, .cpp ve diğer kaynak dosyaları eşleştirmek için sed alma konusunda sorun yaşıyorum. Yine de C'yi kullanıyoruz, bu yüzden sadece eşleştirme - veya: ( object->pointers
grep'in her kod satırından önce dosya adına eklediği karakterler) her şeyi eşleştirir ve dağıtır.
MATCH="= ${1}"
.--include=*.c --include=*.cpp --include=*.java --include=*.cs
Aramayı kaynak dosyalarla sınırlandırmak için de ekledim . Teşekkürler!