sed的简介与使用

Posted

tags:

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

sed简介

   sed与grep、gawk并称为文本处理三剑客

   --stream editor for filtering and transforming text   

   sed编辑器:每次从文本文件中读取一行到sed的模式匹配空间进行匹配也称行编辑器

   如下图sed有两个空间一个是模式匹配空间,另一个是保持空间,sed可以在模式空间和保持空间中进行数据交换处理,最  nm  终输出模式匹配空间的内容。

   技术分享

sed的语法

    sed [OPTION]... {script-only-if-no-other-script} [input-file]... 

    常用选项

      -n:不输出模式空间中的内容至屏幕,逐行处理每行都会存在模式空间中

        技术分享       

      -e:多点编辑

      -f:指定文件中读取编辑脚本

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

      -i:编辑原始文件中的内容(慎用)

        sed -i ‘/^UUID/d‘ /etc/fstab ------将fstab中以UUID为开头删除

    地址定界

     1)单地址

        #:指定一个单行

     2)地址范围

        #,#

        #,+#

        /part1/,/part2/

        #,/part/

      3)不指定地址范围,默认为全文处理

      4)~:步进

        sed ‘1~2p‘ /etc/fstab -------显示所有奇数行(第一行开始步进2)

    编辑命令

      d:删除指定行

        sed ‘1,4d‘ /etc/fstab

      p:打印当前模式空间中的内容

        sed -n ‘1,6p‘ /etc/fstab

      a \text:在行后面追加文本,支持使用\n实现多行追加

        sed ‘$a \This is insert‘ /etc/fstab  --------末行添加This is insert

        技术分享

      i \text:在指定行的前面追加文本,支持使用\n实现多行追加

      c \test:替换行为单行或者多行文本

      w \file:将符合条件的内容另存到file中

        sed -n ‘/UUID/w /tmp/fstab.txt‘ /etc/fstab

        技术分享

      r /path/file:将file的内容读取到指定文件中

        sed ‘5r /etc/issue‘ /etc/fstab --------读取/etc/issue到/etc/fstab中第五行

        中的内容

      =:打印行号

        sed ‘/UUID/=‘ /etc/fstab

      !:取反条件

        sed ‘/^UUID/!d‘ /etc/fstab ----以UUID开头的行都不删除

      s///:查找替换,支持[email protected]@@ s###:

        替换标记:

            g:行内全局替换

            i:忽略字符的大小写

            p:只显示替换的行

              w /path/file:将替换过的行保存到file文件中

        sed ‘[email protected]@[email protected]‘ /etc/fstab -----把全文中的UUID替换成uuid    

        sed ‘[email protected]@&[email protected]‘ /etc/fstab ------把全文中的UUID替换成uuider

    sed高级编辑命令

     h:把模式空间中的内容覆盖到保持空间中

     H:把模式空间中的内容追加至保持空间中

     g:从保持空间取出数据覆盖至模式空间

     G:从保持空间取出数据追加至模式空间

     x:把模式空间中的内容与保持空间中的内容进行互换

     n:读取匹配到的行的下一行至模式空间

     N:追加匹配到的行的下一行至模式空间

     d:删除模式空间中的行

     D:删除多行模式空间中的所有行

      

      sed -n ‘n;p‘ /etc/fstab -----显示偶数行(读取一行到模式空间,将下一行读取覆盖到模

        式空间)

     sed ‘1!G;h;$!d‘ file --------逆序显示file中的内容

      sed ‘$!N;$!D‘ file ----------显示文件后两行

     sed ‘$!d‘ file --------------显示文件最后一行

     sed ‘G‘ file ----------------每一行后面多加一个空白行

     sed ‘g‘ file-----------------将所有行都变为空白行

      sed ‘/^$/d;G‘ file-----------有多个空白行合并成一个空白行,没有空白行追加一个空

                    白行

     sed ‘n;d‘ file---------------显示奇数行

     sed -n ‘1!G;h;$p‘ file-------逆显示file中的内容

    


    

     

            

以上是关于sed的简介与使用的主要内容,如果未能解决你的问题,请参考以下文章

Linux sed 写命令常见使用案例

Linux sed 删除行命令常见使用详解

sed 命令

打开高效文本编辑之门_Linux sed之模式空间与保留空间

Linux sed 打印模式空间p命令使用案例

sed 工具简介