Mac OS X에 여러 줄 정규식 검색을 수행 할 수있는 명령이 있습니까?


12

한 줄로 제한되지 않은 디렉토리를 통해 간단한 정규식 검색을 재귀 적으로 수행하고 싶습니다.

나는 grep과 ack을 시도했지만 이것도 지원하지 않는 것 같습니다.

선택한 텍스트 편집기 ( Sublime Text )가 잘 수행 할 수 있기 때문에 계산 비용이 너무 많이 들지 않아야합니다 (제 경우에는) .

나는 이것의 간단한 명령 행 버전을 찾고 있습니다. Google은 pcregrep 을 설정했지만 Mac에서는 찾을 수없는 것 같습니다. 내가 올바른 장소를 보지 않습니까?


1
당신이 찾고있는 것을 보여주는 예가 도움이 될 것입니다. 그리고 않습니다 grep당신은 (당신이 원하는 것을 찾을 상황에 맞는 도움으로 -C1)?
mbb

답변:


15

Homebrew를 설치 한 후 다음을 수행하십시오.

brew install pcre

이것은 당신에게 최신을 줄 것이다 pcregrep


1

당신이 찾고있는 것을 정확하게 말하지 않았으므로 줄 바꿈을 무시하고 파일에 112와 223이 포함되어 있는지 확인하는 작업을 상상할 것입니다.

약간 고안된 awk해결책 :

awk -vRS='' '/112.*223/ { print "found it"; exit }' file.in

RS변수 레코드 분리를 포함한다. 빈 문자열로 설정하면 전체 파일을 하나의 레코드로 읽습니다.

큰 파일에서는 메모리가 매우 비효율적 일 수 있습니다.

그건 그렇고, OpenBSD에서 이것을하고 있지만 OS X는 같은 방식으로 작동해야합니다.


나는 OS X 10.11.2에 있고 "awk : invalid -v option"을
얻는다

OS X에서 당신은 사이의 공간이 필요 v하고 RS. 즉,awk -v RS='' '/112.*223/ { print "found it"; exit }' file.in

0

"pcregrep"은 이전의 안정 pcregrep버전과 최신 버전을 의미 할 수 있습니다 pcre2grep. 둘 다 PCRE 프로젝트에서 제공pcre.org 합니다.

Mac 포트 는 전자를 포트의 일부 pcre(버전 8.40에서 안정적)로, 후자를 포트의 일부 pcre2(현재 버전 10.22)로 제공합니다. 다음을 통해 설치하십시오.

% sudo port install pcre2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.