sed命令快速精通

1.简介
              sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。

 2.使用方法

   sed [options]'AdressCommand' file ...
             -n:静默模式,不再默认显示模式空间
Adress :
    1.Startline,Endline
        Forexample :1,100
        $ :最后一行
        
    2./RegExp/
        /^root/
    3./pattern1/,/pattern2/
        第一次被模式一匹配的行开始,至第一次被pattern2匹配的行结束,这中间的所有行
    4.LineNumber
        指定某一行
    5.StartLine,+N
        从,startLine开始,向后N行
    Command:
        d:删除符合条件的行
        p:显示符合条件的行
        a \string:在指定的行,后面追加新行,内容为string
        i \string :在指定行的前面添加新行,内容为string
        r file :将指定文件内容的添加到符合条件处
        w file :将指定范围内的内容另存至指定文件处
        s/pattern/string/;查询替换
            加修饰符:
                g:全局替换
                i:忽略大小写
        s///;s###;s @@@   

3.例子   
定址:
    p:print
        sed -n '3p' /etc/grep.conf          #打印第三行
        sed -n '1,10p' /etc/passwd        #打印第一到第十行
    d:delete
        sed '2,5d' /etc/passwd
#打印含有固定字符或字符串的行
    sed '/my/p' datafile
    sed -n '/my/p' datafile                    #取消sed默认打印,默认sed会自动将文件全部打印一遍
s命令:查询替换
    sed 's/pattern/string/'
    sed -n 's/xiaoming/DSB/g' /etc/passwd                    #因为没有加p所以没有输出
        正确执行:sed -n 's/dushibing/dsb/gp' /etc/passwd
    sed -n '1,20s/nologin$/login/gp' /etc/passwd
#分割符默认是/,但也可以使用#或其他字符作为分隔符
    sed -n '1,20s#nologin#login#gp' /etc/passswd       #输出结果与上面相同
    
-e 选项:用于多个编辑任务,在下一行开始编辑前,所有的编辑动作将应用到模式缓冲区中的行上
    sed -e '1,10d' -e 's/xiaoming/hanmeimei/gp' /etc/passwd
    
r命令:读命令,sed使用该命令将以一个文件中的文本内容加到当前文件的特定位置上。
    sed '/xiaoming/r file1' /etc/passwd
    
a 命令:追加命令,追加将添加新文本到文件中的当前行,接读入模式缓冲区中的行,如果追加的内容超过一行,
则在每一行都必须以反斜杠结束,最后一行除外。最后一行将以引号和文件名结束。
    sed '/^#/a \
    xiaominglove\
    hanmeimei' /test/fstab
    
w命令:将指定范围内容保存到另一个文件内  
  sed -n '/^#/w /test/love' /etc/passswd
 
i命令:在当前行前面添加新的文本
    sed '2i xiaoming' /test/love



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值