我有一个禁用的配置,因为它嵌入在注释中。 我的Sed正在删除模式下面的行,但是带有模式的行也会被删除。我可以告诉Sed保留当前行吗?或者只删除找到的模式之前和之后的行。
输入
...
<!--
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-->
...
桑达
# sed -e '/<Connector port="8009" protocol="AJP\/1.3" redirectPort="8443" \/>/,+2d' server.xml
输出
...
<!--
...
希望成为输出:
...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
...
答案 0 :(得分:3)
您的输入似乎是一个XML文档。使用适当的解析器来处理它。例如,xsh:
open server.xml ;
for my $c in //comment()[contains(.,'<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />')]
xinsert chunk $c replace $c ;
save :b ;
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed '$!N;/\n<Connector port="8009" protocol="AJP\/1.3" redirectPort="8443" \/>/{s/.*\n//p;$!N;d};P;D' file
在图案空间中保留2行并删除第一行,打印下一行并在找到图案时删除以下行。