【问题标题】:How to use sed to delete multiple lines when the pattern is matched and stop until the first blank line?模式匹配时如何使用sed删除多行并停止直到第一个空行?
【发布时间】:2015-06-27 17:10:24
【问题描述】:

我对 shell 脚本很陌生。

如何在模式匹配时删除多行并在匹配第一个空行之前停止删除?

【问题讨论】:

    标签: linux shell sed


    【解决方案1】:

    你可以这样做:

    sed '/STARTING_PATTERN/,/^$/d' filename
    

    这将选择从STARTING_PATTERN 到空白行^$ 的所有行,然后删除这些行。

    要就地编辑文件,请使用-i 选项。

    sed -i '/STARTING_PATTER/,/^$/d' filename
    

    或者使用awk:

    awk 'BEGIN{f=1} /STARTING_PATTERN/{f=0} f{print} !$0{f=1}' filename
    

    【讨论】:

    • 感谢您的回复,看起来这些行已从输出中删除,但当我打开文件时,这些行仍然存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多