如果我跑grep -C 1 match
在以下文件上:
a
b
match1
c
d
e
match2
f
match3
g
我得到以下输出:
b
match1
c
--
e
match2
f
match3
g
正如您所看到的,由于连续匹配“match2”和“match3”周围的上下文重叠,因此它们被合并。但是,我更愿意为每场比赛获取一个上下文描述,可能会从上下文报告中的输入中复制行。在这种情况下,我想要的是:
b
match1
c
--
e
match2
f
--
f
match3
g
实现这一目标的最佳方法是什么?我更喜欢足够通用的解决方案,可以轻松适应其他解决方案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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)