繁体   English   中英

如何 grep 目录并将找到的完整行写入文件

[英]how can I grep a directory and write the full line found to a file

我在我的目录中有一个字符串,它看起来像这样:

Found an error with id: XXXX

我希望能够获取所有这些行并将它们写入一个新的单独文件。 目前我有这个:

grep -rl "Found an error with id:" . >> errorOutput.txt

但这只会打印包含该字符串的文件。 有什么办法可以得到带有 id 的完整行吗?

您的-l标志是这里的罪魁祸首。 由于-r递归搜索,它会抑制匹配行中的内容,并仅打印出包含匹配项的文件。 即使没有-l标志,您也会得到filename:pattern结果。

因此,要将模式存储在文件中,请使用额外的awk到管道,如下所示。

grep -r "Found an error with id:" . | awk -F: '{ print $2 }' > results.log

或者只是使用grep跳过使用-h标志打印文件名(FreeBSD 和 GNU 变体都支持这一点)

grep -rh "Found an error with id:" . > results.log

顺便说一句, awk本身很强大,它可以在文件系统上自行进行模式搜索。 所以你可以这样做

awk '/Found an error with id:/' * > results.log 2>/dev/null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM