3.2.9 匹配特定行

    如前所述,sed 默认的会将每一个编辑命令(editing command)应用到每个输入行。而现在我们要告诉你的是:还可以限制一条命令要应用到哪些行,只要在命令前置一个地址(address)即可。因此,sed 命令的完整形式是:
        address   command
 
     行编号
        可以使用绝对的行编号作为地址。稍后将有介绍。
 
    范围
        可指定行的范围,仅需将地址以逗号隔开:
        sed  -n  '10,42p' foo.xml                             仅打印10~42行
        sed '/foo/,/bar/  s/baz/quux/g'                  仅替换范围内的行
 
    第二个命令为“从含有 foo 的行开始,再匹配是否有 bar 的行再将匹配后的结果中,有 baz 的全部换成 quux ”。
    这种以逗点隔开两个两个正则表达式的方式称为范围表达式(range expression)。在 sed 里,总是需要使用至少两行才能表达。
 
    
    否定正则表达式
        有时,将命令应用于不匹配与特定模式的每一行,也是很有用的。通过将 ! 加在正则表达式后面就能做到,如下所示:
            /used/ !s/new/used/g               将没有 used 的每个行里所有的 new 改成 used
 
        

猜你喜欢

转载自www.cnblogs.com/avention/p/10307159.html