如何使用macosgrep将文件视为大字符串?

我在 Ubuntu 上使用以下命令列出包含给定模式的所有文件:

for f in *; do if grep -zoPq "foonbar" $f; then echo $f; fi; done

但是在 macos 上,我收到以下错误:

grep: invalid option -- z

-z与 gnu grep 不同,没有选项可以使用 macos grep 将文件视为大字符串。

macos 上是否有另一个选项grep相当于 `-z ?如果没有,我可以使用什么替代方法来获得相同的结果?

回答

-P(PERL regex) 仅在 Mac OSgnu grep上的 BSD 中受支持,但在 BSD 中不受支持grep

您可以使用home brew来安装gnu grep或使用此等效awk命令:

awk 'p ~ /foo$/ && /^bar/ {print FILENAME; nextfile}; {p=$0}' *

请注意,这消除了使用 shellfor循环的需要。


以上是如何使用macosgrep将文件视为大字符串?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>