특정 문자열 패턴이 포함 된 모든 파일을 찾아야했습니다. 염두에 두어야 할 첫 번째 해결책은 xargs grep으로 find piped를 사용하는 것입니다 .
find . -iname '*.py' | xargs grep -e 'YOUR_PATTERN'
그러나 두 줄 이상에 걸쳐있는 패턴을 찾아야한다면 바닐라 그렙이 여러 줄 패턴을 찾을 수 없기 때문에 붙어 있습니다.
답변
그래서 Perl Compatible Regular Expressions GREP의 약자 인 pcregrep 을 발견 했습니다 .
예를 들어, ‘ _name ‘변수 바로 뒤에 ‘ _description ‘변수 가있는 파일을 찾아야합니다 .
find . -iname '*.py' | xargs pcregrep -M '_name.*\n.*_description'
팁 : 패턴에 줄 바꿈 문자를 포함해야합니다. 플랫폼에 따라 ‘\ n’, \ r ‘,’\ r \ n ‘등이 될 수 있습니다.
답변
답변
다음은 GNUgrep
를 사용하는 예입니다 .
grep -Pzo '_name.*\n.*_description'
-z
/--null-data
라인의 순서로 처리를 입력 및 출력 데이터.
여기도 참조
답변
grep -P
libpcre도 사용하지만 훨씬 더 광범위하게 설치됩니다. title
html 문서 의 전체 섹션 을 찾으려면 여러 줄에 걸쳐 있어도 다음을 사용할 수 있습니다.
grep -P '(?s)<title>.*</title>' example.html
이후 PCRE 프로젝트 펄 표준을 구현, 참조를 위해 펄 문서를 사용합니다 :
답변
더 유용한 예는 다음과 같습니다.
pcregrep -Mi "<title>(.*\n){0,5}</title>" afile.html
제목 줄은 최대 5 줄로 표시 되더라도 html 파일에서 제목 태그를 검색합니다.
무제한 라인의 예는 다음과 같습니다.
pcregrep -Mi "(?s)<title>.*</title>" example.html