sed 行编辑器

用法:

    sed  [选项]... 'script' inputfile                    

其中script是脚本基于sed语法的脚本                 inputfile文件内容 

     常用选项

        -n   :不输出模式空间内容到屏幕,即不自动打印

        -e   :多点编辑

        -f    :   /PATH/SCRIPT_FILE:从指定文件中读取编辑脚本

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

        -i .bak :备份文件并原处编辑

   把原文件做一个带.bak的备份文件        然后就不怕对原文件修改出错了

script   :  脚本包括两部分    1 地址     2 命令

         ‘地址命令’

      地址定界

      1不给地址 :  对全文处理

      2单地址

                  #:指定的行,   第#行      $:最后一行

                  /pattern/: 被此处模式所匹配的行          模式就是关键字 词 等

默认sed使用基本正则     /基本正则/            

      3地址范围:

            #,#              从第#行 到 第#行

            #, +#            从第n行 到 第n+m行

            /pat1/,/pat2/            从匹配模式1的行  到  匹配模式2的行

           #,/pat1/           从第#行   到   匹配模式1 的行结束

       4~ :步进

                    1~2   奇数行

                    2~2    偶数行

   编辑命令

            d:删除模式空间匹配的行,并立即启用下一轮循环

            p :打印当前模式空间的内容,追加到默认输出之后   

      #sed    ‘2p’        文件                  会打印两遍第二行     如果只想打印第二行可以

     #sed    -n    ’2p‘    文件

            a []text :在指定行后面追加文本

                                       支持使用 实现多行追加

            i []text : 在行前面插入文本

#sed    '2,5i      ==='    f1

           c [] texr: 替换行为单行或多行文本

            w  /path/somefile :保存模式匹配的行至指定文件 

 把符合条件的行存到文件里

            r /path/somefile  :读取指定文件的文本至模式空间中匹配到的行后

            =:为模式空间中的行打印行号   只显示行号

            !:模式空间中匹配 行取反处理

   示例      

   sed    '2p'  /etc/passwd         显示第二行   但是会默认全打印所以有两个第二行

   sed    -n   '2p'  /etc/passwd     与上一条相反   只显示第二行

   sed    -n   '1,4p'  /etc/passwd         只打印第一行到第四行

   sed    -n   '/root/p'  /etc/passwd       打印包含root的行

   sed    -n   '2,/root/p'  /etc/passwd   从2行开始  到含有root的行

   sed    -n   '/^$/='  file     显示空行行号

   sed  -n    -e    '/^$/p'   -e  '/^$/='      file      空行显示行号并把行也打印出来

   sed     '/root/asuperman'     /etc/passwd     行后     在包含root的行后 打印字符串superman

   sed     '/root/isuperman'     /etc/passwd      行前                          行前     

   sed     '/root/csuperman'     /etc/passwd  代替行              

   sed     '/^$/d'       file          删除空行

    sed   '1,10d'       file         删除1到10行

    nl   /etc/passwd  |sed   '2,5d'         删除第2行到第5行

    nl    /etc/passwd  | sed  '2a  tea'          在第2行后面追加单词   tea  或字符   tea

     sed   's/test/mytest/g'   example            搜索  test          替代  mytest

     sed    -n   's/root/&superman/p'   /etc/passwd  单词后     搜索 root  替代rootsuperman        &相当于 表示前面的root     

    sed     -n    's/root/superman&/p'  /etc/passwd  单词前        

    sed     -e    's/dog/cat/'         -e      's/hi/lo/'      pets         多点替换  

     sed      -i.bak     's/dog/cat/g'        pets           把文件改了 

原文地址:https://www.cnblogs.com/liang-1/p/8810477.html