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

sed的用法以及练习

时间:2016-03-08 00:36:12      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:表达式   空间   file   资料   

sed命令: 

   sed是主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等的文件处理工具。

常用选项:

sed [options] ‘AddressCommand‘ file ...

-n: 静默模式,不再默认显示模式空间中的内容,只显示被处理的行。

-i: 直接修改原文件。(慎用)

-e SCRIPT -e SCRIPT:可以同时执行多个脚本

-f /PATH/TO/SED_SCRIPT

sed -f /path/to/scripts  file

-r: 表示使用扩展正则表达式

常用命令:
        a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d   ∶删除,因为是删除啊,所以 d 后面通常不接任何东西;
        i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
        p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
        s  ∶取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正规表示法!

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

    sed -r ‘s/[[:space:]]//g‘ /etc/grub.conf

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

    sed ‘s@\(id:\)[0-9]\(:initdefault:\)@\15\2@g‘ /etc/inittab,其中\1和\2为地址空间引用;

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

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

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

    sed ‘s/^\#//g‘ /etc/inittab

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

    sed ‘s/^\#[[::space:]]+//g‘ /etc/inittab

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

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

7、取出一个文件路径的目录名称;

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

sed的用法以及练习

标签:表达式   空间   file   资料   

原文地址:http://backyard.blog.51cto.com/4925780/1748609

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