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


12

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

我尝试了grep和ack,但似乎都不支持。

我知道它在计算上应该不会太昂贵(就我而言),因为我选择的文本编辑器(Sublime Text)可以做到。

我只是在寻找一个简单的命令行版本。Google已启用pcregrep,但Mac似乎找不到。我只是在找对地方吗?


1
举例说明您要寻找的东西会有所帮助。并且不grep与上下文帮助你找到你想要的东西(-C1)?
mbb 2011年

Answers:


15

安装Homebrew,然后:

brew install pcre

这将为您提供最新的 pcregrep


1

您没有确切说明要查找的内容,因此我将想象一下该任务,以找出文件是否包含112,然后是223,而忽略换行符。

一个稍微做作的awk解决方案:

awk -vRS='' '/112.*223/ { print "found it"; exit }' file.in

RS变量包含记录分隔符。通过将其设置为空字符串,整个文件将被读取为一条记录。

这对于大文件可能是非常低效的内存。

顺便说一下,我正在OpenBSD上执行此操作,但是OS X awk应该以相同的方式工作。


我在OS X 10.11.2上并获得“ awk:无效的-v选项”
HaggleLad

在OS X中,您需要在v和之间加一个空格RS。即awk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
Neil

0

“ pcregrep”可以指较旧的马stable pcregrep和较新的马stable pcre2grep。两者均由位于的PCRE项目提供pcre.org

Mac Ports提供前者作为端口的一部分pcre(在8.40版中稳定),而后者作为端口的一部分pcre2(当前为10.22版)。通过以下方式安装:

% sudo port install pcre2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.