grep 是一个 Linux 实用程序,通常用于搜索文件内容或传递给它的任何输入。在搜索多个文件时,显示文件名和行号很有用,尤其是在使用它在 shell 脚本中自动化时。
默认情况下,如果您将多个文件传递给,为了清楚起见grep,它将显示filename: 在匹配行之前。您实际上可以使用标志关闭此行为,该-h 标志永远不会显示文件名:
但是,如果您只将一个文件传递给grep,则默认情况下它不会显示文件名。在使用 shell 脚本进行自动化时,这可能会成为一个问题,因为您可能不知道目录中有多少文件,并且它可能会破坏依赖于文件名的自动化。
简单的解决方法是使用大写 -H 标志,它与文件名相反,-h 并且无论如何都会打开文件名,即使只有一个文件作为输入传递。
grep -H "foo" file
该-H 标志还有另一个意想不到但有用的效果——当与来自 的输入(例如 Unix 管道)配对时stdin,它将(standard input): 代替文件名打印。
您还可以将其与-n 标志结合使用以获取行号:
grep -Hn "foo"
中的-H 标志grep不符合 POSIX,并且在一些更晦涩的基于 Unix 的操作系统中不可用。幸运的是,您可以使用一个 hack,通过将/dev/null 伪造的第二个文件输入传递给grep,这会欺骗它认为有多个文件:
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/wlcs_6305/article/details/125893823
内容来源于网络,如有侵权,请联系作者删除!