相关疑难解决方法(0)

如何通过空字符使grep单独输出?

假设我们正在对一堆文件进行多行正则表达式模式搜索,并且我们想从 grep 中提取匹配项。默认情况下,grep 输出由换行符分隔的匹配项,但由于我们使用的是多行模式,这会造成我们无法轻松提取单个匹配项的不便。

例子

grep -rzPIho '}\n\n\w\w\b' | od -a
Run Code Online (Sandbox Code Playgroud)

根据文件树中的文件,这可能会产生类似的输出

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
Run Code Online (Sandbox Code Playgroud)

如您所见,我们无法拆分换行符以获得进一步处理的匹配项,因为匹配项本身包含换行符。

什么不起作用

现在--null(or -Z) 仅与 结合使用-l,这使得 grep 仅列出文件名而不是匹配项,因此这在这里无济于事。

请注意,这不是find 的 -print0 和 xargs 的 -0 开关是否有等价的 grep的副本,因为该问题的要求不同,因此可以使用替代技术来回答。

那么,我们怎样才能做到这一点呢?也许将 grep …

unix bash grep text-processing null-character

4
推荐指数
1
解决办法
1557
查看次数

标签 统计

bash ×1

grep ×1

null-character ×1

text-processing ×1

unix ×1