代码之家  ›  专栏  ›  技术社区  ›  spiderman

基于条件[复制]删除块的内容

sed
  •  -2
  • spiderman  · 技术社区  · 6 年前

    这个问题已经有了答案:

    下面的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}
    
    1 回复  |  直到 6 年前
        1
  •  -1
  •   potong    6 年前

    这可能对你有用(gnu sed):

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

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