sed的应用

sed的应用

一、sed命令(流编辑器)

sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。

sed  [-n] 'AddressCommand' file ..
-n  不打印;sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以用来打印编辑行。
-f  如果正在调用sed脚本文件,使用此选项。此选项通知sed一个脚本文件支持所有的sed命令.
例如:sed -f myscript.sed input_file,这里myscript . sed即为支持sed命令的文件。 -c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条sed命令,此选项无用,但指定它也没有关系。 -i 编辑原文件(此选项慎用,如果使用则原文件就会被修改,无法恢复)。
-r 表示使用扩展正则表达式

sed由Adress和Command组成

二、Address(用于指定处理数)

1、指定行数量

     如:sed -n "1,4p" /etc/passwd   1到4行显示

2、指定的某一行

      如:

        开头:sed -n  "1" /etc/passwd 

        结尾:sed -n "$p" /etc/passwd

3、开始行,+N

      显示从开始行,向后的N行

     如:

           sed -n "1,+2p" /etc/passwd  显示第1行的后2行

4、/模式(正则表达式)/:用来过滤特定的行

   如:sed -n "/^root/p" /etc/passwd

5、/模式1/,/模式2/

第一次被模式1匹配到的行开始,到第一次被模式2匹配到的行结束,这中间的所有行。

如:sed -n "//bin/bash$/p" /etc/passwd

三、Command

      p:显示符合条件的行;

      d:删除符合条件的行;

      a string :在符合条件的行后面添加;

              :用于换行

      i  string : 在指定的行前面添加新行,内容为string

      r   FILE   : 将指定的文件的所有内容添加到符合条件行处

      w  FILE   : 将指定范围内的内容另存为至指定的文件中

      s/pattern/string/修饰符:查找并替换,默认只替换每行中第一次被模式匹配到的字符串。如果想替换全部加修饰符:

                                    g:全局替换

                                    i:忽略字符大小写

        如;sed "s///#/g" /etc/fstab 把所有的/替换成#号

       s///:可以不用/来作为分隔,可以是s***,s###

            如:sed "s*/*#*g" /etc/fstab

      例子:如有一文件a内容为: hello  like

                                       haw a you ,love                    

       自身引用(为串加上字符):

                 使用&:引用模式匹配的整个串

                  l..e  :  like --->liker

                            love --->lover

                 语句:sed "s#l..e#&r#g" a

       后项引用(修改串):

                 l..e  :  like -->Like

                           love --> Love

                 语句:sed "s#l(..e)#L1#g" a

原文地址:https://www.cnblogs.com/programmer-tlh/p/6069074.html