shell中使用sed处理文本


  • 核心层

    sed命令

    其中比较重要的有

    ^ 表示一行的开头。如:/^#/ 以#开头的匹配。
    $ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
    \< 表示词首。 如:\<abc 表示以 abc 为首的詞。
    \> 表示词尾。 如:abc\> 表示以 abc 結尾的詞。
    . 表示任何单个字符。
    * 表示某个字符出现了0次或多次。
    [ ] 字符集合。 如:[abc] 表示匹配a或b或c,还有 [a-zA-Z] 表示匹配所有的26个字符。如果其中有^表示反,如 [^a] 表示非a的字符
    

    sed命令使用注意

    参数 sed -i 选项会直接更改文本的内容
    
    sed -i "/SectorNumer/s/[0-9]\+/$1/g" data
    #解释:
    # 首先匹配含有SectorNumer的那一行
    #然后匹配含有数字0-9的数字,这里的\+很重要
    #如果不加\+,那么假如$1是3,那么一位数可以正常工作,但是两位数例如75就会被替换为33
    #也就是单个数字单个数字的替换了,这就不是我们想要的结果了
    
    在一行刚开始使用井号, s/^/#/g
    如果一行是以空格开始才使用井号,s/^ /#/g
    这里在 ^ 之后多了个空格

 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待