Sed 根据条件删除块的内容

Sed 根据条件删除块的内容,sed,Sed,下面sed删除{content start}和{content end}之间出现的所有块,但只想删除包含sting“labtest”的块 sed -ie '/{content-start.*}/,/{content-end}/d' test.txt test.txt {content-start} abc1 labtest def1 ghi1 {content-end} {content-start} abc2 def2 labtest ghi2 {content-end} {content-

下面sed删除{content start}和{content end}之间出现的所有块,但只想删除包含sting“labtest”的块

sed -ie '/{content-start.*}/,/{content-end}/d' test.txt
test.txt

{content-start}
abc1
labtest
def1
ghi1
{content-end}
{content-start}
abc2
def2
labtest
ghi2
{content-end}
{content-start}
abc3
def3
ghi3
{content-end}
这可能适用于您(GNU-sed):

收集开始字符串和结束字符串之间的行,然后测试所需字符串的集合,如果为正,则删除

sed '/{content-start}/{:a;N;/{content-end}/!ba;/labtest/d}' file