命令行 – 如何匹配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的所有行,我们分支到标签cr 对于所有其他行,我们跳过其余的命令. 这标志着标签cr 这在分支为cr的线上进行取代. 使用GNU sed,上面的语法可以缩短为: sed '10,20{b cr}; 30,40{b cr}; b; :cr; s/complicated/regex/' file (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |