【发布时间】:2026-02-01 21:25:01
【问题描述】:
我的 grep 命令看起来像这样 zgrep -B bb -A aa "模式" *
我希望输出为:
file1:line1
file1:line2
file1:line3
file1:pattern
file1:line4
file1:line5
file1:line6
</blank line>
file2:line1
file2:line2
file2:line3
file2:pattern
file2:line4
file2:line5
file2:line6
问题是第一个找到的结果对应的行结束和第二个找到的结果对应的行开始时很难区分。
请注意,尽管 man grep 表示在连续的匹配组之间添加了“--”。仅当在同一文件中找到多个匹配项时才有效。但在我的搜索中(如上)我正在搜索多个文件。
还要注意,在每个 bb+aa+1 行之后添加一个新的空白行是行不通的,因为如果一个文件在模式之前的行数少于 bb 行怎么办。
【问题讨论】:
-
grep -H 将有助于区分输出。
-
@WilliamPursell 那是做什么的?我试过了,但看不出有什么不同。
-
@JoshuaPinter
-H只是将文件名添加到每个输出的开头。仅当仅将单个文件作为参数传递给 grep 时,它才有所不同。不过,在这种情况下,它似乎并没有真正的帮助。 -
@WilliamPursell 感谢您的回复。以为我错过了什么。 :)
-
在以下链接中查看使用 sed 的有效解决方案:unix.stackexchange.com/a/3128