首页 > 解决方案 > 根据条件删除块的内容

问题描述

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

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

测试.txt

{content-start}
abc1
labtest
def1
ghi1
{content-end}
{content-start}
abc2
def2
labtest
ghi2
{content-end}
{content-start}
abc3
def3
ghi3
{content-end}

标签: sed

解决方案


这可能对您有用(GNU sed):

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

收集开始和结束字符串之间的行,然后测试所需字符串的集合并删除如果是肯定的。


推荐阅读