假设我们正在对一堆文件进行多行正则表达式模式搜索,并且我们想从 grep 中提取匹配项。默认情况下,grep 输出由换行符分隔的匹配项,但由于我们正在执行多行模式,这造成了我们无法轻松提取单个匹配项的不便。
例子
grep -rzPIho '}\n\n\w\w\b' | od -a
根据文件树中的文件,这可能会产生类似的输出
0000000 } nl nl m y nl } nl nl i f nl } nl nl m
0000020 y nl } nl nl m y nl } nl nl i f nl } nl
0000040 nl m y nl
0000044
如您所见,我们无法在换行符上拆分以获得匹配项以进行进一步处理,因为匹配项本身包含换行符。
什么不起作用
现在--null
(or -Z
) 只与 一起使用-l
,这使得 grep 只列出文件名而不是匹配项,所以这在这里没有帮助。
请注意,这不是重复Is there a grep equivalent for find's -print0 and xargs's -0 开关?,因为该问题的要求不同,因此可以使用替代技术来回答。
那么,我们怎样才能做到这一点呢?也许将 grep 与其他工具结合使用?