Linux之Sed命令详解


    sed简介:

        sed 是一种在线编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕;sed命令本身是一个很好用的管道命令,sed命令还可以将数据进行取代、删除、新增等等的功能。

    sed用法:   

         sed [选项]... {脚本}{命令} [输入文件]...

            

            选项:

               -r:在脚本中使用扩展正则表达式

               -n:不输出模式空间的内容至屏幕

               -e:多点编辑,同时制定多个编辑命令

               -i:直接编辑原文件             

               -f /PATH/FILE:从文件中读取sed命




             脚本:这里的脚本可以理解为“定址”,用来定位你所希望编辑的行;也可理解定义一个范围。

                                            定址:

                                                   ^:以什么开头的

                                                   $:以什么结尾的

                                                   .:后面跟一个任意字符

                                                   *:0个或多个字符

                                                   []:指定范围内的字符

                                                   [^]:不在指定范围内的字符

                                                   #:指定行

                                                   /pattern/:被模式匹配的每一行

                                                   #,#:从#行到#行

                                                   #,+#:从#到+#行

                                                   1~2:奇数行

                                                   2~2:偶数行

                                                    .....



                                            命令:代表要执行的操作

                                                    a \charecter:新增,a的后面跟字符串,在行后面增加字符串

                                                    i \charecter:插入,在行前面增加字符串

                                                    d:删除指定的行

                                                    p:输出指定的行

                                                    c \charecter:取代,取代指定行

                                                    s:替换,例:s/old/new/g 把old替换成new

                                                    g:全局替换



                            下面是些示例:


            1. 删除/tmp/passwd中的 2~5行

                   Linux之Sed命令详解_在线编辑器        


            2.替换/tmp/fstab中的UUID为UID

                Linux之Sed命令详解_表达式_02

                   

             3.删除/tmp/fstab中的以#号开头的行

                Linux之Sed命令详解_缓冲区_03


            4.在/tmp/fstab的9到12行后面加上”how are you“

                Linux之Sed命令详解_管道_04 

                


            5.只显示/etc/passwd中关于root的行

                    Linux之Sed命令详解_管道_05

                    -n,-p一般性都是联合使用




                            

                        以上是sed命令的基本用法,如需深入研究,请自行学习。