bash – cat * | grep something …结果是什么文件?

前端之家收集整理的这篇文章主要介绍了bash – cat * | grep something …结果是什么文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果要运行以下命令
cat * | grep DATABASE

shell会吐出包含单词DATABASE的*文件中的所有行.有没有办法同时吐出每行的文件

我试图为grep使用-H选项,根据man说打印每个匹配的文件名,但在我的shell中它只是说

(standard input):$DATABASE_FUNCTION = dothis();
不要用猫.而是直接使用grep DATABASE *或grep -n DATABASE *(如果你想知道行号和文件名).

useless use of cat.

为了澄清一点:cat *实际上连接所有文件,因为它通过管道将它们提供给grep,所以grep无法知道哪个内容属于哪个文件,甚至实际上甚至不知道它是在扫描文件还是你只是快速打字.一旦使用管道,它就是一个大的标准输入流.

最后,-H几乎肯定是多余的,因为当有多个文件搜索时,grep默认打印文件名.但是,如果您想要解析输出,它可能会有一些用处,因为* glob可能会扩展为单个文件,在这种情况下grep会省略文件名.

猜你在找的Bash相关文章