三剑客之sed

Posted ldyaly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三剑客之sed相关的知识,希望对你有一定的参考价值。

grep:适用于找文本内容

sed:适用于大量修改。属于行编辑器。支持标准输入。是一行行的取到内存中处理。

格式:sed  [参数]   ‘地址命令’   文件        (可以只有命令,但不能只有地址)

一、参数

  -n    使默认输出不显示

  -i.后缀  真正的修改了文件。加后缀为了给原来的文件一个备份

  -r    支持扩展正则表达式

二、地址

  ①、不给为空,默认为全文处理

  ②、单地址:

    #:指定的行。  $:最后一行

    /正则表达式/

  ③、范围地址:

    #,#:几到几行

    #,+#:从几到几行及以后的行

    /正则/,/正则/:从第一个正则开始,到第二个。若第二个未出现,则一直到结尾

    #,/正则/

  ④、步进:

    奇数行:1~2   从第一行开始,每次加2行

    偶数行:2~2 从第二行开始,每次加2行

三、命令

  p  使结果显示

  d  将选中的行删除不显示,其他行显示(不是真的删除) sed   ‘1d;4d‘  a.txt

  a []text  在后一行追加   (注:可多个添加)a  text  在下一行不顶头添加  a  text1    text2  连续加两行

  i  []text     在上一行追加

  c []text  将本行替换

  w /path/file  将找到的写入file中

  r  /path/file  将file内容写入匹配的行的下面

  =  显示匹配的行号

  !   取反(给地址,不算命令)

  s///(g)  例如:sed -nr ‘s/(r..t)/1er/gp‘ /data/passwd

           ifconfig |sed -n ‘2s/^.*inet//;s/ net.*//p‘

           ifconfig |sed -n ‘2s/(.*inet)([0-9].*)( netmask.*)/2/p‘

           sed -nr ‘^#!s/^/#/p‘  文件名 

           echo /etc/sysconfig |sed -nr ‘s/(.*)/([^/]+)/?/2/p‘

           echo /etc/sysconfig/ |sed -nr ‘s/(.*)/([^/]+)/?/1/p‘

注意sed中使用变量:①、“$n”

           ②、‘ ‘‘‘$n‘‘‘ ‘

 

修改网卡名为:①、sed -ir ‘/^GRUB_CMDLINE_LINUX=/s/(.*)"$/1 net.ifnames=0"/‘ /etc/default/grub

       或 sed -ir ‘/^GRUB_CMDLINE_LINUX=/s/"$/ net.ifnames=0"/‘ etc/default/grub

       ②、Centos7、8:  grub2-mkconfig  -o  /boot/grub2/grub.cfg

         Ubuntu:  grub-mkconfig  -o  /boot/grub/grub.cfg

 

 

④、sed的高级用法:

    sed除了支持空间模式(pattern space),还支持保持空间(Hold space),它只负责暂时保留,不参与sed运算

    h  把pattern内容覆盖到hold空间

    H  把pattern内容追加到hold空间

    g  把hold内容覆盖到pattern空间

    G  把hold内容追加到pattern空间

    d  删除pattern空间的行

  将第三行推到第九行:sed ‘3h,9G‘

            sed ‘3h,9G;9!d‘

              

 

以上是关于三剑客之sed的主要内容,如果未能解决你的问题,请参考以下文章

三剑客之 sed详解

三剑客之SED行天下

linux文本三剑客之sed命令详解

文本处理三剑客之 sed

三剑客之sed

linux三剑客之sed入门详解