我想在 pdf 文件中 grep 特定搜索词。我使用 pdfgrep 来完成这项任务,效果很好。但是,有时单词之间会用空格隔开。例如:spacedword
写为s p a c e d w o r d
。
所以我想我的问题是:我如何寻找一个单词,哪些字母由空格分隔?
目前我正在使用脚本进一步处理搜索结果:
search=$1
pdfgrep -i "$search" * | grep "$search" -i -B 1 | sed "s/-$//g" | sed "s/\s\+/;/g" > "$search".csv
虽然我很懒,但正在考虑一个正则表达式解决方案,它可以搜索spacedword
,s p a c e d w o r d
而不需要将两个搜索词明确地写为两个单独的参数。
没有出现混合空格单词和无空格单词的情况。因此,pdf 文件中只有spacedword
或s p a c e d w o r d
(没有类似s pa c edw o rd
),我只是事先不知道 pdf 中是哪个版本,除非我自己查看。
答案1
这实际上是一个 shell 问题。它对所有终端程序都遵循相同的原理。
您必须在空格前加上反斜杠:s\ p\ a\ c\ e\ w\ o\ r\ d
或者将整个内容括在单引号中:'s p a c e w o r d'
或者双引号中:"s p a c e w o r d"
单引号和双引号之间的区别在于,双引号会插入变量和其他内容,而单引号始终是文字。
(这个答案适用于类似 sh 的 shell,包括无处不在的 bash。其他 shell 可能工作方式不同。)