我想通过不限于单行的目录递归地进行简单的正则表达式搜索。
我尝试了 grep 和 ack,但似乎都不支持这一点。
我知道它不应该太耗费计算资源(就我而言),因为我选择的文本编辑器(Sublime Text) 就能做得很好。
我正在寻找一个简单的命令行版本。谷歌找到了普雷格里普,但我似乎找不到 Mac 版。是不是我找错地方了?
答案1
安装 Homebrew 然后:
brew install pcre
这将为您提供最新的pcregrep
答案2
您没有确切说明您在寻找什么,因此我想象任务是找出文件是否包含 112 后跟 223,忽略换行符。
一个稍微有点人为的awk
解决方案:
awk -vRS='' '/112.*223/ { print "found it"; exit }' file.in
该RS
变量包含记录分隔符。通过将其设置为空字符串,整个文件将被读取为一条记录。
对于大文件来说,这很可能会导致内存效率非常低。
顺便说一句,我是在 OpenBSD 上执行此操作,但 OS X awk 应该以相同的方式工作。
答案3
“pcregrep” 可以指较旧的稳定版本pcregrep
和较新的版本pcre2grep
。两者都由PCRE 项目pcre.org
。
Mac 端口前者作为 port 的一部分提供pcre
(稳定版本 8.40),后者作为 port 的一部分提供pcre2
(当前版本 10.22)。通过以下方式安装:
% sudo port install pcre2