如何使用sed简易删除指定范围的多行字符串
sed 范围匹配删除指定多行内容方案
完全可以实现,sed原生支持起止正则匹配的区间操作,无需复杂命令即可满足需求。
执行命令
你可以直接使用以下命令实现目标:
# 先执行下面不带-i的命令测试输出是否符合预期 sed '/^tomcat\.util/,/\.jar$/d' /tmp/foobar.txt # 确认输出正确后,加-i参数直接修改原文件 sed -i '/^tomcat\.util/,/\.jar$/d' /tmp/foobar.txt
命令说明
- 范围语法
/起始匹配规则/,/结束匹配规则/会自动匹配从第一个符合起始规则的行开始,到第一个符合结束规则的行为止的所有内容,包含起止行本身 - 后缀的
d参数代表删除匹配到的所有行 - 正则中的
.需要转义为\.,避免.匹配任意字符导致误匹配
执行后文件效果
命令执行完成后,/tmp/foobar.txt的剩余内容如下:
this is line 1 this is line 3 the end leave me and me
补充说明
如果你需要在修改前自动备份原文件,可以将-i参数改为-i.bak,执行后会自动生成/tmp/foobar.txt.bak备份文件,避免误操作丢失原始内容。
内容的提问来源于stack exchange,提问作者dvanrensburg
相关产品推荐
相关产品推荐

