문자열에 대한 코드를 검색 할 때 나는 무의미한 상황없이 결과를 얻는다는 문제에 끊임없이 부딪쳤다. 예를 들어, 함수 호출이 세 줄로 나누어지고 매개 변수의 이름을 검색하는 경우 함수의 이름이 아니라 그 자체로 매개 변수가 한 줄에 표시됩니다. 주석 블록에,줄 바꿈 될 수있는 코드 줄 전체를 어떻게 grep합니까?
MY_CONSTANT,
마찬가지로 :
/////////////////////////////////////////
// FIXMESOON, do..while is the wrong choice here, because
// it makes the wrong thing happen
/////////////////////////////////////////
이처럼 보였다 라인을 반환 MY_CONSTANT에 대한 grepping
...
someFunctionCall ("test",
MY_CONSTANT,
(some *really) - long/expression);
를 포함하는 파일의 예를 들어
,
FIXMESOON에 대한 그렙은 매우 실망스러운 답변을 제공합니다 :
// FIXMESOON, do..while is the wrong choice here, because
수천 개의 히트가있을 때, 단일 라인 결과는 조금 의미가 없습니다. 제가하고 싶은 것은 grep이 소스 코드 라인의 시작과 끝점을 인식하는 것입니다. "; 라인 구분 기호가 좋은 시작이 될 것입니다.
히트가 댓글 내에있는 경우 전체 댓글 블록을 반환 할 수 있다면 보너스 포인트가됩니다.
grep만으로는이 작업을 수행 할 수 없다는 것을 알고 있습니다. 또한 grep이 특정 수의 컨텍스트를 반환하도록하는 옵션을 알고 있습니다. 리눅스에서 어떻게 수행 할 것인가에 대한 제안? 참고로 선호하는 언어는 C와 Perl입니다.
나는 뭔가 쓸 수 있다고 확신하지만, 누군가 이미 이것을 해 뒀음에 틀림 없다.
감사합니다.
몰라 모든 당근을 변경 AWK를 사용
< \ 물건을> 압축,하지만 좋은 질문입니다! – mpen
좋은 해결책 대신에, grep의'-C n'을 문맥의'n' 라인에 항상 사용할 수 있습니다. –