Podczas wyszukiwania kodu dla ciągów nieustannie napotykam problem, który powoduje, że uzyskuję pozbawione znaczenia, pozbawione kontekstu wyniki. Na przykład, jeśli wywołanie funkcji jest podzielone na 3 linie, a ja szukam nazwy parametru, otrzymuję parametr sam w sobie, a nie nazwę funkcji.Jak przeglądać całe, ewentualnie zapakowane wiersze kodu?
na przykład w pliku zawierającym
...
someFunctionCall ("test",
MY_CONSTANT,
(some *really) - long/expression);
grepping do MY_CONSTANT powróci do linii, która wyglądała następująco:
MY_CONSTANT,
Podobnie, blok komentarza:
/////////////////////////////////////////
// FIXMESOON, do..while is the wrong choice here, because
// it makes the wrong thing happen
/////////////////////////////////////////
Grpping dla FIXMESOON daje bardzo frustrującą odpowiedź:
// FIXMESOON, do..while is the wrong choice here, because
Kiedy są tysiące trafień, wyniki pojedynczej linii są trochę bez znaczenia. Chciałbym, żeby grep wiedział o punktach początkowych i końcowych linii kodu źródłowego, coś tak prostego, jak o to, by rozważyć ";" jako że separator linii byłby dobrym początkiem.
Punkty premiowe, jeśli możesz zwrócić cały blok komentarza, jeśli trafienie znajduje się wewnątrz komentarza.
Wiem, że nie można tego zrobić z samym grep. Mam również świadomość, że grep zwraca pewną liczbę linii kontekstu. Wszelkie sugestie, jak osiągnąć w Linuksie? Dla moich preferowanych języków są C i Perl.
Jestem pewien, że mógłbym coś napisać, ale wiem, że ktoś już to zrobił.
Dzięki!
wiem, ale to jest dobre pytanie! – mpen
zamiast dobrego rozwiązania, zawsze możesz użyć grepowego '-C n' dla' n' linii kontekstu –