如何有效地结合使用 find 和 grep

如何有效地结合使用 find 和 grep

要查找当前目录中的哪些文件包含特定字符串,我将命令find . -type f -print0 | xargs -0 grep -ial <word>.然而,这仅显示文件的路径。如何以格式打印结果,该格式打印文件路径、行号、带有 n 个标题行和尾部行的匹配行(受参数限制)以及下一个结果之前的换行符?学习 Linux 搜索和文本操作工具的电源使用和技巧的最佳资源是什么?

答案1

grep -iarn -C3 word .

这将搜索当前目录和所有子目录(就像您的find . -type f -print0命令一样),并显示那些文件中与“word”匹配的行以及上下文的三个前导行和尾随行,以及标记每行的文件名和行号。

代替匹配之间的空行,而是grep为您提供仅在其上的成对行--。如果您确实需要一个空行,因为您要将其输出提供给其他程序,则可以使用此版本:

grep -iarn -C3 word . | uniq | sed -e 's/^--$//'

至于你关于如何学习电源技巧的问题,Unixman页面是相当枯燥的阅读,但是浏览man页面以了解一些常用工具是非常有教育意义的。如果您在 Linux 或 UNIX 中进行大量文本操作,我还特别建议您学习 Perl。

相关内容