sed命令初步使用

sed 初步使用
        把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),
        接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。
        接着处理下一行,这样不断重复,直到文件末尾。而源文件不会改变除非使用
        输出重定向。


格式:
    sed[options] "script" FILE....    
        

[options]:
   -n:静默模式,不输出模式空间内的内容;不加 -n 默认打印模式空间的内容
   -r:扩展的正则表达式
   -f 文件:指定sed脚本文件
   -e 'script' -e 'script' :指定多个编辑指令
   -i : 直接编辑原文件    
        
“script”    
    编辑命令:
        d:删除
        p: 打印
        i  \:在被指定到的行前面插入文本
        a  \:在被指定的行的下面插入文本
        \n:换行
        r 文件:在指定位置把另外一个文件的内容插入
        w 文件:将符合条件的所有行保存至指定文件中
        =:显示符号条件的行的行号
        s///:查找条件可以使用模式,但是要替换的内容不行    
        
地址定界:自定义的起始行到结束行
    startline,endline
    1,3
    /pat1/,/pat2/
    /pattern/
    
修饰符:
          g:global,全局替换
          i:ignore-case,不区分字符大小写
练习:
    1)替换/etc/inittab文件中”id:3:initdefault:"一行中的数字为5
    sed 's@\(id:\)[0-9]\(:initdefault\)@\1 5\2' /etc/inittab
    
    2)删除/etc/init.d/funcions文件中的空白行
    sed "/^$/d" /etc/init.d/funcions
    
    3)删除/etc/inittab文件中位于行首的#;
     sed 's@^#@@g' /etc/inittab    
    
    4)删除/etc/rc.d/rc.sysinit文件中以#后跟至少一个空白字符开头的行的行首的#和空白字符。即去掉某些备用选项的#
    sed "s@^#[[:space:]]\{1,\}\@@g" /etc/rc.d/rc.sysinit
    
    5)删除/boot/grub/grub.conf文件中行首的空白字符。
    sed "s@^[[:space:]]\{1,\}@@g" /boot/grub/grub.conf
    
    6)取出一个文件路径的目录名称,如/etc/sysconfig/network,其目录为/etc/sysconfig,功能类似dirname命令;
    echo /etc/sysconfig/network | sed "s%[^/]\{1,\}/\?$%%"    

posted @ 2017-12-10 16:27  乌拉拉Captain  阅读(216)  评论(0编辑  收藏  举报