要查找当前目录中的哪些文件包含特定字符串,我将命令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。