sed是一种流式文本编辑器; 默认情况下,sed的所有处理行为不会影响源文件的内容;


 sed

    sed [OPTION]...‘script’ [input-file]...

  常用选项:

        -n, --quiet, --silent:对于不能匹配模式的行,默认不输出到屏幕

        -e script, --expression=script:多条件编辑

        -f script-file, --file=script-file:从指定的文件中读取脚本

          注意:文件为一个能够定位到脚本文件的路径,最好为绝对路径;

        -i[SUFFIX], --in-place[=SUFFIX]:源文件直接编辑操作;

        -r, --regexp-extended:使sed支持扩展正则表达式;

   

    script部分是由匹配地址使用命令组成

  

    匹配地址指的是对文件内容所需要操作的行范围

        如果为空地址,即为表示对文件的所有行进行处理

        如果为单地址,即为对所匹配的那唯一一行进行处理

        通常表示地址范围有一下几种:

      

            addr1,addr2:从addr1开始到addr2结束的中间所有行;

            first~step:从first标记的行号开始,以step所代表的数字为步长来计算;

              例如:1~2 :1 1+2 3+2 5+2...

            addr1,+N:从addr1开始,包括addr1所在行,并继续向后计算N行;

              例如:2,+7 为2,2+7

            addr1,~N:从addr1开始,包括addr1所在行,向后计算addr1*N行;

              例如:2,~5 为2,2*5

            /pattern1/,/pattern2/:从被pattern1匹配的第一行开始计算,一直到被/pattern2/匹配到的第一行结束;(这一种最常用)

    

    使用命令的是对所匹配到的行采取的使用的命令

        

          =:显示被模式匹配的行的行号

            例如:sed -n '/^$/=' /etc/grub2.cfg  显示空白行的行号

        sed的使用_sed流编辑器

          a \text:在被匹配的行的后面追加text的内容,支持使用\n换行,从而实现多行追加;

    对上一个空白行后面加上"haha" 

   sed的使用_sed流编辑器_02

          i \text: 在被匹配的行的前面追加text的内容,支持使用\n换行,从而实现多行追加

   在文件/jiaoben/chess.sh中所有有#的行前面加‘abc’

   sed的使用_sed流编辑器_03

          c \text:在被匹配的行的修改为text的内容,支持使用\n换行,从而实现多行追加

    在文件/jiaoben/chess.sh中所有有#的行修改为‘abc’

    sed的使用_sed流编辑器_04 

          d:在模式空间中删除被匹配的行,这样的行不能再进行标准输出;

    在文件/jiaoben/chess.sh中所有有#的行删除掉

   sed的使用_sed流编辑器_05

          p:显示模式空间中被模式匹配的行;

          w filepath: 将模式空间中被模式匹配的行,另存到指定文件中

          r filepath: 将filepath文件中的内容追加至模式空间中被模式匹配的行之后

          !Command:在模式空间中被模式匹配的行,不执行command命令;没有被匹配的执行command

   

   查找替换功能

    

      s///:查找替换,(/)分隔符可以任意更换,只要相同即可; 

            s/pattern/text/[control]

           例如:s@/etc/fstab@/etc/mtab@

                将/etc/fstab替换成/etc/mtab


            pattern:计划查找并替换的内容

            text:要替换的结果

            contro:如何进行替换

              g:行内全部替换

              p:显示替换成功的行

              w filepath:将替换成功的行另存到filepath文件中。


            vim中支持后向引用:

             s/\(sting\)/&/

             s/\(sting\)/\1/