为什么grep有时显示文件名,有时却不显示?


8

有人可以向我解释为什么我没有得到示例1中的完整路径吗?

示例1-返回找到的行

grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*;
outcome: MODIFY

示例2-返回完整路径

grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*;
/opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER;

我已经找到了解决方案,但是我想了解这里发生的事情。1条命令,不同的结果/处理。


1
已经找到要使用的选项:-H -H是对多个文件进行grepping时的默认选项。如果在1个文件上使用agrep(例1的情况),则-H不在适当位置。
马可(Marco)

Answers:


13

在第一个示例中,全局文件必须已扩展到单个文件。在这种情况下,grep默认情况下,文件名不会放在前面。

第二个示例必须已扩展到多个文件名,并且grep在这种情况下确实在文件名之前。

您可以使用该-H选项来始终获取输出之前的文件名,或者-h从不获取该文件名。

如果您的grep缺少这些选项,则可以使用grep REGEX /path/to/pattern/* /dev/null来始终获取文件名(从无任何命中,/dev/null但它算作文件名),或者cat /path/to/pattern/* | grep REGEX从不获取文件名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.