Mac OS X 中是否有可以执行多行正则表达式搜索的命令?

Mac OS X 中是否有可以执行多行正则表达式搜索的命令?

我想通过不限于单行的目录递归地进行简单的正则表达式搜索。

我尝试了 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

相关内容