加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

命令行 – 如何匹配sed中的多个地址?

发布时间:2020-12-14 01:47:55 所属栏目:Linux 来源:网络整理
导读:我想为任何匹配多个命令和/或多个命令的行执行一些sed命令:例如,sed ‘50,70 / abc / d’将删除范围50,70中匹配/ abc /的所有行,或者a方法做sed -e ‘10,20s / complex / regex /’-e ‘30,40s / complex / regex /而不必重新输入s / compicated / regex /
我想为任何匹配多个命令和/或多个命令的行执行一些sed命令:例如,sed ‘50,70 / abc / d’将删除范围50,70中匹配/ abc /的所有行,或者a方法做sed -e ‘10,20s / complex / regex /’-e ‘30,40s / complex / regex /而不必重新输入s / compicated / regex /

解决方法

逻辑与

部分可以用大括号完成:

sed '50,70{/abc/d;}'

此外,大括号可以嵌套多个和条件.

(以上是在GNU sed下进行测试的.BSD sed可能会有些不同但却令人沮丧的细节.)

逻辑或

可以使用分支处理或部分:

sed -e '10,20{b cr;}' -e '30,40{b cr;}' -e b -e :cr -e 's/complicated/regex/' file

> 10,20 {b cr;}

对于从10到20的所有行,我们分支到标签cr
> 30,40 {b cr;}

对于从30到40的所有行,我们分支到标签cr
> b

对于所有其他行,我们跳过其余的命令.
>:cr

这标志着标签cr
> s / complex / regex /

这在分支为cr的线上进行取代.

使用GNU sed,上面的语法可以缩短为:

sed '10,20{b cr}; 30,40{b cr}; b; :cr; s/complicated/regex/' file

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读