在 vim 中,我可以使用...
:g/match/-1d
...从比赛前多次删除多于一行...
...并将其与一些调用相结合...
:g/match/+1d
...在匹配后删除多于一行...
:g/match/-1d,+1d
...删除之前之后和当前行...
sed也可以做同样的事情吗?
在 vim 中,我可以使用...
:g/match/-1d
...从比赛前多次删除多于一行...
...并将其与一些调用相结合...
:g/match/+1d
...在匹配后删除多于一行...
:g/match/-1d,+1d
...删除之前之后和当前行...
sed也可以做同样的事情吗?
您要求使用 sed,但
ed
也可以这样做:这告诉 ed用两个命令
s
悄悄地编辑文件:input
5
,减去两行,在与 regex 匹配的行结束5
,再加上两行,d
删除该范围(用 ANSI 转义的换行符分隔
$'\n'
)w
将文件写回磁盘如果区域不重叠,您可以使用
使用 GNU
sed
,删除匹配前的两行和匹配后的三行(中的值{}
)。对于一般
sed
实现,您没有 option-z
,因此您需要使用该H;1h;$!d
方案在缓冲区中收集行,并且不能使用 执行“除换行符之外的所有操作”[^\n]
,因此您需要这样的解决方法:两种解决方案都适用于模式空间中的整个文件,因此不要将其用于大文件。