码迷,mamicode.com
首页 > 其他好文 > 详细

文本处理工具sed

时间:2018-07-10 00:37:21      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:rc.d   option   编辑器   grub.conf   stream   模式空间   大小   ber   扩展正则表达式   

sed:stream Editor流编辑器,默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕。
语法:

    sed [option] ‘AddressCommand‘ file1 file2...

option选项有:

    -n :静默模式,不再显示模式空间的内容
    -i :直接修改源文件
    -r :使用扩展正则表达式

Address常用的匹配范围:

    1、startLine,endLine
            如:1,100 表示从第一行到100行,$表示最后一行
    2、/RegEXP/ 正则匹配,将匹配到的行显示出来
            如:/root/ 将匹配到有root的行显示
    3、/pattern1/,/pattern2/,从第一次匹配到pattern1开始到匹配到pattern2的行结束的中间的行
    4、LineNumber匹配指定的行
    5、startLine,+N,从startLine开始,往后的N行

command常用命令

    d:删除匹配到的行
    p:显示符合条件的行
    a \string :在匹配当的行后面追加string的内容
    i \string : 在匹配当的行前面添加string的内容
    r file :将file文件的内容添加到匹配到的行出
    w file :将匹配到的行添加到file文件中
    s/pattern/string/修饰符 :将匹配到的pattern替换成string,默认是替换第一个被匹配到的
                    常用的修饰符有:
                            i :忽略大小写
                            g :全局替换

如:
1、删除/etc/grub.conf文件中行首的空白符;

    sed -r ‘s@^[[:spapce:]]+@@g‘ /etc/grub.conf

2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;

    sed ‘s@\(id:\)[0-9]\(:initdefault:\)@\15\2@g‘ /etc/inittab

3、删除/etc/inittab文件中的空白行;

    sed ‘/^$/d‘ /etc/inittab

4、删除/etc/inittab文件中开头的#号;

    sed -r ‘s@^#@@g‘ /etc/inittab

5、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;

    sed -r ‘s@^#[[:space:]]+@@g‘ /etc/inittab

6、删除某文件中以空白字符开头后面跟#类的行中的开头的空白字符及#号

    sed -r ‘s@^[[:space:]]+#@@g‘ /etc/inittab

7、取出一个文件路径的目录名称;如取出/etc/inittab文件的目录,即/etc

    ##echo "/etc/rc.d/" | sed -r ‘s@^(/.*/)[^/]+/?@\1@g‘    

    echo ‘/etc/inittab‘ | sed -r ‘s#^(/.*)/(.*)#\1#‘

基名/文件名:

    echo "/etc/rc.d/" | sed -r ‘s@^/.*/([^/]+)/?@\1@g‘

    echo ‘/etc/inittab‘ | sed -r ‘s#^(/.*)/(.*)#\2#‘

需要注意的是,如果要替换原文见的内容要加 -i 参数,sed 中的///,可以使用###或@@@等字符代替。
p的 command参数也要注意下,匹配到的行将会显示两次,没匹配到的显示一次,如果显示两次的,第一次是 p的的作用将匹配到的行打印出来,第二次是sed命令的作用,会将模式空间的内容显示出来,所以说没匹配到的也会显示一次,如果想只显示一次可以加 -n 参数,那么sed命令中模式空间的内容不显示。

文本处理工具sed

标签:rc.d   option   编辑器   grub.conf   stream   模式空间   大小   ber   扩展正则表达式   

原文地址:http://blog.51cto.com/13803030/2139500

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!