我如何查找一个单词,其中字母由空格分隔?

我如何查找一个单词,其中字母由空格分隔?

我想在 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

虽然我很懒,但正在考虑一个正则表达式解决方案,它可以搜索spacedwords p a c e d w o r d而不需要将两个搜索词明确地写为两个单独的参数。

没有出现混合空格单词和无空格单词的情况。因此,pdf 文件中只有spacedwords 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 可能工作方式不同。)

相关内容