我有一个类似的文件:
name 1
name 2
name 3
#START#
no name 1
no name 2
#END#
name 4
我正在寻找与sed -n '/#START#/,/#END#/p'
相反的结果:
name 1
name 2
name 3
name 4
秘密是什么?
答案 0 :(得分:3)
sed '/#START#/,/#END#/d'
删除指定范围内的行。
答案 1 :(得分:1)
以下是一些awk
解决方案:
awk '/#START#/ {f=1} !f; /#END/ {f=0}' file
name 1
name 2
name 3
name 4
您还可以使用范围,例如sed
,但如果您有更多要测试的内容,则范围不太灵活:
awk '/#START#/,/#END/ {next} 1' file
name 1
name 2
name 3
name 4