我正在尝试使用 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(基本正则表达式)不支持设置重复次数的格式,也不支持\d
,因此您需要使用该-P
标志启用 PCRE(Perl 兼容正则表达式)。这将允许您使用\d
“数字”(您在 BRE 中需要[0-9]
或[[:digit:]]
)以及{x,y}
.最后,{5,}
意思是“5个或更多”,正好得到你需要的5个{5}
。
因此,将所有这些放在一起,您正在寻找的命令是:
pdfgrep -P '[ES]\d{5}$'