使用sed获取不在两行之间的文件内容

时间:2015-05-14 00:01:42

标签: bash shell sed scripting

我有一个类似的文件:

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

秘密是什么?

2 个答案:

答案 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