특정 패턴을 사용하는 방법(구문?)

특정 패턴을 사용하는 방법(구문?)

pdfgrep을 사용하여 특정 패턴(E 또는 S로 시작해야 함)과 5자리 숫자(만)가 나오는 모든 항목을 검색한 다음 명령(아마도 mv 명령)을 실행하려고 합니다.

지금까지 다음 명령이 있습니다.

pdfgrep -e '[E-S]\d{5,}$' filename.pdf

하지만 아무리 해도 그 PDF에서는 아무것도 찾을 수 없습니다. 특정 용어(pdfgrep "term" filename.pdf)를 검색하면 관련 용어가 반환되므로 pdfgrep이 해당 용어를 찾을 수 있다는 것을 알고 있습니다.

내 문제는 명령이나 정규식 구문에 있는 것 같은데 정확히 어디에 있는지 찾을 수 없습니다.

답변1

여기에 세 가지 질문이 있습니다. 첫째, 문자 클래스는 [E-S]"모든 문자와 일치"를 의미합니다.~에서두번째도착하다S". E또는 을 일치시키려면 를 S사용하십시오 [ES].

다음으로 {x,y}BRE(Basic Regular Expressions)는 반복 횟수 형식 지정을 지원하지 않으며 지원하지 않으므로 해당 플래그를 사용하여 PCRE(Perl Compatible Regular Expressions)를 활성화 \d해야 합니다 . -P이렇게 하면 "숫자"(BRE 또는 \d에서 필요함 )와 마지막으로 "5 이상"을 의미하여 필요한 5를 정확하게 얻을 수 있습니다 .[0-9][[:digit:]]{x,y}{5,}{5}

따라서 이 모든 것을 종합하면 찾고 있는 명령은 다음과 같습니다.

pdfgrep  -P '[ES]\d{5}$'

관련 정보