在grep中的每个结果之后添加空行

我的grep命令看起来像这样zgrep -B bb -A aa“pattern”*

我会想输出为:

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 

问题在于,难以区分第一个find的结果对应的行和第二个find的结果对应的行是否开始。

请注意,尽pipeman grep表示在连续的一组匹配之间添加了“ – ”。 只有当在同一个文件中find多个匹配时它才起作用。 但在我的search(如上)我search多个文件。

还要注意的是,在每个bb + aa + 1行之后添加一个新的空白行将不起作用,因为如果一个文件在该模式之前的行数less于bb行。

管道grep输出通过

 awk -F: '{if(f!=$1)print ""; f=$1; print $0;}' 

我不能用-A和-B参数测试它,所以我不能肯定地说,但是你可以尝试在Unix StackEx上使用sed G。 如果这很重要的话,你会失去色彩。

grep没有这个选项,我不认为有办法用xargstr (我试过),但是这里是一个for循环,它会做到这一点( for f in *; do grep -H "1" $f && echo; done ):

 [ 11:58 jon@hozbox.com ~/test ]$ for f in *; do grep -H "1" $f && echo; done a:1 b:1 c:1 d:1 [ 11:58 jon@hozbox.com ~/test ]$ ll -rw-r--r-- 1 jon people 2B Nov 25 11:58 a -rw-r--r-- 1 jon people 2B Nov 25 11:58 b -rw-r--r-- 1 jon people 2B Nov 25 11:58 c -rw-r--r-- 1 jon people 2B Nov 25 11:58 d 

-H将显示grep匹配的文件名。 根据需要将*更改为您自己的文件全局/路径扩展字符串。

尝试使用-c 2; 打印上下文,我看到grep正在分离它找到的o / p