如何用sed删除模式匹配后的首个空白行
使用sed删除匹配模式后的首个空白行
针对你的需求,正确的sed命令如下:
# 预览处理结果(不修改原文件) sed '/b/{n;/^$/d}' FILE # 原地修改文件(直接覆盖原文件) sed -i '/b/{n;/^$/d}' FILE
命令逻辑说明:
/b/:匹配到包含"b"的行时,执行花括号内的指令n:读取匹配行的下一行到模式空间/^$/d:如果读取到的是空白行(^$匹配空行),则删除该行
效果验证:
原文件内容:
a b c d
执行命令后结果:
a b c d
原写法失效原因:
你之前尝试的sed -i '/b/,/^$/{//d}' FILE是匹配从"b"行到首个空白行的范围,然后删除范围内的匹配行(即"b"行和空白行),会误删目标模式行,不符合需求。
内容的提问来源于stack exchange,提问作者Craig Thiebaud
相关产品推荐
相关产品推荐

