grep输出显示文件名的方法

grep 可以在输出的匹配行前加上文件名。这是 grep 的默认行为之一,具体取决于使用方式:

  1. 当搜索多个文件时grep 会自动在匹配行前加上文件名:# 搜索多个文件时,默认显示文件名 grep "pattern" file1.txt file2.txt file3.txt 输出会类似:file1.txt:这是包含pattern的行 file2.txt:这是另一个包含pattern的行
  2. 当只搜索单个文件时,默认不显示文件名,可通过 -H 选项强制显示:# 单个文件搜索时,强制显示文件名 grep -H "pattern" file.txt 输出会显示:file.txt:这是包含pattern的行
  3. 当搜索目录下所有文件时(结合 -r 递归选项),也会自动显示文件名:# 递归搜索目录,显示文件名 grep -r "pattern" ./directory/

相关常用选项:

  • -H:总是显示文件名(即使只搜索一个文件)
  • -h:从不显示文件名(即使搜索多个文件)
  • -n:同时显示行号(可与文件名一起显示)

示例(同时显示文件名和行号):

grep -Hn "error" /var/log/*.log

输出会类似:

/var/log/syslog:123:2023-08-11 10:00:00 [error] 系统错误信息
/var/log/auth.log:45:2023-08-11 10:05:00 [error
此条目发表在linux文章分类目录,贴了标签。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注