【问题标题】:Remove lines from a file between lines matching a pattern从文件中删除与模式匹配的行之间的行
【发布时间】:2021-05-07 09:47:51
【问题描述】:

如果这是我的文件:

This part can stay
START ALPHA
This should be deleted
And this too
END ALPHA
This should stay
START BETA
This should be deleted
END BETA
This should stay

应该删除“START (whatever)”和“END (whatever)”行之间的所有内容。

我该怎么做?我可以使用 sed、perl、python,任何可行的方法。

【问题讨论】:

    标签: linux pcre


    【解决方案1】:

    使用ed(1)sed(1) 脚本:

    $ cat filter.sh
    #!/bin/sh
    exec sed "/START $1/,/END $1/d" data.txt
    $ filter.sh ALPHA
    This part can stay
    This should stay
    START BETA
    This should be deleted
    END BETA
    This should stay
    $ filter.sh BETA
    This part can stay
    START ALPHA
    This should be deleted
    And this too
    END ALPHA
    This should stay
    This should stay
    $ _
    

    $ 符号是 shell 提示符,我想你会明白的。 filter.sh 是执行您想要的操作的脚本。

    【讨论】: