如何在匹配行之前使用 grep 显示文件名和行号

在这里插入图片描述
grep 是一个 Linux 实用程序,通常用于搜索文件内容或传递给它的任何输入。在搜索多个文件时,显示文件名和行号很有用,尤其是在使用它在 shell 脚本中自动化时。

使用 grep 显示文件名

默认情况下,如果您将多个文件传递给,为了清楚起见grep,它将显示filename: 在匹配行之前。您实际上可以使用标志关闭此行为,该-h 标志永远不会显示文件名:

在这里插入图片描述

但是,如果您只将一个文件传递给grep,则默认情况下它不会显示文件名。在使用 shell 脚本进行自动化时,这可能会成为一个问题,因为您可能不知道目录中有多少文件,并且它可能会破坏依赖于文件名的自动化。

简单的解决方法是使用大写 -H 标志,它与文件名相反,-h 并且无论如何都会打开文件名,即使只有一个文件作为输入传递。

grep -H "foo" file

在这里插入图片描述

该-H 标志还有另一个意想不到但有用的效果——当与来自 的输入(例如 Unix 管道)配对时stdin,它将(standard input): 代替文件名打印。
在这里插入图片描述

使用 grep 显示行号

您还可以将其与-n 标志结合使用以获取行号:

grep -Hn "foo"

在这里插入图片描述

符合 POSIX

中的-H 标志grep不符合 POSIX,并且在一些更晦涩的基于 Unix 的操作系统中不可用。幸运的是,您可以使用一个 hack,通过将/dev/null 伪造的第二个文件输入传递给grep,这会欺骗它认为有多个文件:

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mikes zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值