微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从尾部grep输出并包含文件名?

如何解决如何从尾部grep输出并包含文件名?

this 怎么样:

tail -n +1 *.txt | grep foo

稍微修改显示文件名?

当它没有通过管道传输时,文件名很方便地成为输出的一部分。 grep 操作可以限制在文件内容上,同时保留输出文件名吗?

解决方法

你可以使用一个简单匹配的正则表达式;

  • 所有文件名; ==>(.*)<==
  • 您的“搜索”字符串(例如:foo
tail -n +1 * | grep -E '==>(.*)<==|foo'

花药选项,基于 my original answer,通过 -exec 运行 grep,如下所示:

find . -type f -print -exec grep 'foo'  {} \;

在 3 个文件 ({a,b,c}.txt) 中使用两种方法的示例,所有文件都包含 abc

bash-3.2$ tail -n +1 *
==> a.txt <==
a
b
c


==> b.txt <==
a
b
c


==> c.txt <==
a
b
c


bash-3.2$ tail -n +1 * | grep -E '==>(.*)<==|c'
==> a.txt <==
c
==> b.txt <==
c
==> c.txt <==
c


bash-3.2$ find . -type f -print -exec grep 'c' {} \;
./c.txt
c
./b.txt
c
./a.txt
c

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。