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}$'