grep - 将回车符识别为新行

grep - 将回车符识别为新行

我想在运行 unix 的网络服务器中搜索包含特定字符串的 php 文件。通常我使用这些命令来完成此任务:

寻找 。 -名称“*.php”-print0 | xargs -0 grep -H -i "要搜索的字符串"

到目前为止,这效果很好,但现在我遇到了一个服务器,其中所有 php 脚本都没有任何换行符,而只有回车符。 grep 似乎无法将回车符识别为新行,因此如果文件中有匹配项,上面的命令将打印文件的全部内容,而不仅仅是打印该行。

任何帮助将不胜感激!

答案1

效率不是很高,但应该可以:

find . -name '*.php' -exec bash -c "grep 'pattern' <(tr '\r' '\n' <{})" \;

这是显示文件名的替代方法:

find . -name '*.php' -exec bash -c "grep 'pattern' <(tr '\r' '\n' <'{}') |
    sed s+^+'{}':\ +" \;

相关内容