주석 처리되지 않은 줄에서만 문자열 찾기

주석 처리되지 않은 줄에서만 문자열 찾기

주석 처리되지 않은 줄에서만 문자열을 찾는 방법은 무엇입니까? 주석 처리된 줄의 문자열에 결과가 포함되는 것을 원하지 않습니다. 예: file.tx

My name is Jane
#My name is Sara

"name"이라는 단어를 grep하고 다음과 같이 출력을 인쇄하고 싶습니다.

My name is Jane

하지만 주석 줄이 표시되는 것을 원하지 않습니다.

감사해요

답변1

자세한 내용 없이 완벽한 답변을 드리는 것은 불가능합니다. 다음과 같이 실행할 수 있습니다.

remove the comments (and maybe literal strings)   | 
grep in the output

주석(여러 줄이든 아니든)을 제거하는 것은 까다로울 수 있습니다. 이를 적절하게 처리하려면 최소한 언어별 어휘 분석기가 필요합니다.

어쨌든, 우리는 빠른 해킹(그다지 강력하지는 않음)을 작성할 수 있습니다. 다음은 C 주석이 포함된 예입니다.

   perl -0pe 's!/\*.*?\*/!!gs' x.c   | grep searchstring

답변2

파일에서 주석 처리되지 않은 행을 인쇄하려는 경우 다음 명령이 유용합니다.

grep -v '^ *#' filename.txt  | grep searchstring

-v -> reverse
-v "^ *#" -> 시작 줄에 "#" 없이 줄을 인쇄합니다(# ABC - 이 줄도 피합니다)

그것은 오랫동안 나를 위해 일해 왔으며 활성 crontab 작업을 표시하는 데 사용합니다.

답변3

다음과 같이 작동합니다(주석 줄이 기호로 시작한다고 가정 #).

grep -v '^#' myfile.txt | grep string_to_search

#주석 줄을 나타내는 기호( C, c, 또는 예를 들어 ) 로 바꿀 수 있습니다 d.D*!

관련 정보