我想通过不限于单行的目录递归进行简单的正则表达式搜索。
我尝试了grep和ack,但似乎都不支持。
我知道它在计算上应该不会太昂贵(就我而言),因为我选择的文本编辑器(Sublime Text)可以做到。
我只是在寻找一个简单的命令行版本。Google已启用pcregrep,但Mac似乎找不到。我只是在找对地方吗?
我想通过不限于单行的目录递归进行简单的正则表达式搜索。
我尝试了grep和ack,但似乎都不支持。
我知道它在计算上应该不会太昂贵(就我而言),因为我选择的文本编辑器(Sublime Text)可以做到。
我只是在寻找一个简单的命令行版本。Google已启用pcregrep,但Mac似乎找不到。我只是在找对地方吗?
Answers:
您没有确切说明要查找的内容,因此我将想象一下该任务,以找出文件是否包含112,然后是223,而忽略换行符。
一个稍微做作的awk
解决方案:
awk -vRS='' '/112.*223/ { print "found it"; exit }' file.in
该RS
变量包含记录分隔符。通过将其设置为空字符串,整个文件将被读取为一条记录。
这对于大文件可能是非常低效的内存。
顺便说一下,我正在OpenBSD上执行此操作,但是OS X awk应该以相同的方式工作。
v
和之间加一个空格RS
。即awk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
“ pcregrep”可以指较旧的马stable pcregrep
和较新的马stable pcre2grep
。两者均由位于的PCRE项目提供pcre.org
。
Mac Ports提供前者作为端口的一部分pcre
(在8.40版中稳定),而后者作为端口的一部分pcre2
(当前为10.22版)。通过以下方式安装:
% sudo port install pcre2
grep
与上下文帮助你找到你想要的东西(-C1
)?