如果我运行grep -C 1 match以下文件:
a
b
match1
c
d
e
match2
f
match3
g
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
b
match1
c
--
e
match2
f
match3
g
Run Code Online (Sandbox Code Playgroud)
如您所见,由于连续匹配"match2"和"match3"的上下文重叠,因此它们会合并.但是,我更愿意为每个匹配获得一个上下文描述,可能在上下文报告中复制输入行.在这种情况下,我想要的是:
b
match1
c
--
e
match2
f
--
f
match3
g
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?我宁愿解决方案,足够一般是平凡适用于其他grep选项(不同的值-A,-B,-C,或完全不同的标志).理想情况下,我希望有一个聪明的方法来做到这一点grep....
我认为使用简单的 grep 不可能做到这一点。
下面的 sed 结构在某种程度上有效,现在我只需要弄清楚如何添加“--”分隔符
$ sed -n -e '/match/{x;1!p;g;$!N;p;D;}' -e h log
b
match1
c
e
match2
f
f
match3
g
Run Code Online (Sandbox Code Playgroud)