sed基本用法整理

sed基础用法整理

sed: Stream Editor 行编辑器

用法:

         sed [Options] ‘AddressCommand’ file…

常用参数:

         -n:静默模式,不显示未操作行,默认会将未操作的行显示。

         -i:直接修改源文件,默认情况下,sed的操作不会对源文件有任何影响,只会将结果显示到显示器。

         -e script:script为sed相关操作,同时执行多个操作,每个-e后,跟一个操作

         -f FILE:FIEL指的是某一文件的路径(绝对,相对均可),将操作保存至文件中,一行一个操作,此方法可以同时执行多个操作。

         -r:使用扩展的正则表达式。

Address:

         1.  startline , endline:需要操作的文件内容范围,以行来界定,用$来表示最后一行

         2.  /RegExp/:正则表达式

         3.  /Pattern1/ , /Pattern2/:第一次被Pattern1匹配到的行开始至第一次被Pattern2匹配到的行之间的行

         4.  LineNumber:精确指定某一行

         5.  Startline,+#:#指的是某一非负整数,从指定行开始至其后的#行

Command:

        1.  d:删除匹配到的行

        2.  p:打印显示符合条件的行

        3.  a \string:在指定行后添加string行,如果需要加多行,可使用\n来换行

        4.  i \string:在指定行前添加string行,用法同3

        5.  r FILE:FIEL指的是某一文件的路径(绝对,相对均可),将指定的文件内容添加至符合条件的行后

        6.  W FILE:FIEL指的是某一文件的路径(绝对,相对均可),将指定范围的内容保存至文件FILE中

        7.  s/Pattern/string/:查找匹配的子串,并替换string,默认只替换每行中第一次被匹配到的串

                s/Pattern/string/g:全局替换,只要匹配到,就替换

                s/Pattern/string/i:忽略大小写

                注:这里的“/”分割线并非固定,也可使用#,@等,但须保证三分割符相同

例子:

1.  使用sed显示/etc/passwd中的第一行,最后一行,五至十行

命令:

显示第一行: [root@localhost~]# sed -n '1p' /etc/passwd

        显示最后一行: [root@localhost~]# sed -n '$p' /etc/passwd

         显示五至十行: [root@localhost~]# sed -n '5,10p' /etc/passwd或

                                        [root@localhost ~]# sed -n '5,+5p'/etc/passwd

结果如图:

              sed基本用法整理_第1张图片

2.  删除/boot/grub2/grub.cfg文件中的行首的空白

命令:

                  [root@localhost ~]# sed 's/^[[:space:]]*//' /boot/grub2/grub.cfg

结果:

              sed基本用法整理_第2张图片

3.  删除/boot/grub2/grub.cfg文件中的行首的空白行

命令:

                [root@localhost ~]# sed '/^$/d' /boot/grub2/grub.cfg

结果:

sed基本用法整理_第3张图片

4.  删除/etc/inittab行首的#号

命令:

                [root@localhost ~]# sed 's/^#//g' /etc/inittab

结果:

sed基本用法整理_第4张图片

5.  删除/etc/inittab行首的#号,但要求其后必须包含空格

命令:

               [root@localhost ~]# sed -r 's@^#[[:space:]]+@@g' /etc/inittab

结果:

sed基本用法整理_第5张图片

6.  取出路径/etc/ssh/中的etc子串

命令:

              [root@localhost ~]# echo /etc/ssh/ | sed -r 's@/(.*)/[^/]+/@\1@g'

结果:

你可能感兴趣的:(linux系统相关,linux运维,Linux命令详解)