sed命令的入门与进阶

sed:Stream EDitor

    什么是sed呢?sed被称为linux文本处理三剑客之一,另外两个就是大名鼎鼎的grep和awk。sed是非交互性的流编辑器,在处理文本时一次只读取一行文本,然后基于所给定的编辑脚本对模式空间中的内容做编辑处理并把处理后的结果输出至标准输出。接着处理下一行文本,这样不断重复,直到文件的末尾。sed命令默认不会对原文件做修改,因此你可以使劲的造,而不必担心有什么可怕的后果。

   下面来说说sed命令的用法:

     格式:sed [option]… ‘script’ inputfile…

用法:

    sed [option] ‘addr1,[addr2]编辑命令’ inputfile…

    sed [option] “addr,[addr2]编辑命令” inputfile…

        例:sed -n ‘2d’ /etc/issue

    
          -n:静默模式,不输出模式空间中的内容至标准输出
          -e ‘script’ [-e ‘script’]: 指定多个编辑指令
                    # sed -e ‘/^$/d’ -e ‘s@^#@@’ /etc/fstab
          -f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
                    # sed -f sed.script /etc/fstab
                        将一组命令写入脚本文件中。
                            例:/^$/d/
                                s@^#@@
          -r:使用扩展正则表达式    
          -i:原处编辑(直接修改原文件,你懂的)
      
     地址定界:
             1.不给地址:对全文进行处理
              2.单地址:
                         #:指定行;
                         /pattern/:被此处模式所能够匹配到的每一行;     
              3.地址范围:
                         x,y:表示从x行到y行
                         #,+#:表示从#行到+#行,例:3,+3:表示从第3行到第6行
                         /pat1/,/pat2/:从/pat1/所匹配到的行到/pat2/所匹配到的之间所有的行
                         #,/pat1/:从#行开始,到第一次被/pat1/所匹配到的行结束之间所有的行
              4.~:步进
                        1~2p:显示奇数行
                         例:sed ‘1~2p’ /etc/issue
                        2~2p:显示偶数行
                         例:sed ‘2~2p’ /etc/issue
编辑命令

d:删除模式空间中匹配到的行

例:sed ‘/^UUID/d’ /etc/fstab

p:显示模式空间中的内容(不配合-n选项,默认会显示两遍)

例:sed -n ‘/^UUID/p’ /etc/fstab

a  \text:在匹配到的行后面添加文本;

例:sed ‘/^UUID/a Test line’ /etc/fstab

例:sed ‘/^UUID/a Test line \nsecond line’ /etc/fstab(配合\n可实现多行追加)

i  \text:在匹配到的行前面添加文本;支持使用\n实现多行插入    

例:sed ‘/^UUID/i Test line’ /etc/fstab    

c \text:替换匹配的行为单行或多行文本

例:sed ‘^/UUID/c uuid’ /etc/fstab

w /PATH/TO/FILE:保存模式空间中的内容至指定文件中

例:sed ‘^/UUID/w /tmp/fstab.txt’ /etc/fstab

r /PATH/FORM/FILE:   读取指定文件的内容至模式空间中所匹配到的行后面 

例:sed ‘7r /etc/passwd’ /etc/fstab

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

例:sed ‘/^\//=’ /etc/fstab

!:对地址定界取反

例:sed ‘/^UUID/!d’ /etc/fstab

s/查找条件/替换为的内容/:支持使用其它分隔符,s@@@,s###
                   替换标记:
                             g:global,行内全局替换
                             i:忽略字符大小写 
                             p:显示替换成功的行
                             w /PATH/TO/FILE:将替换成功的结果保存至指定文件中
                  例:sed ‘s#^UUID#uuid#’ /etc/fstab

                            同时也支持后向引用

                                   例:sed -n ‘s#r..t#&er#p’ /etc/passwd 

高级编辑命令:
     h(hold):把模式空间中的内容覆盖至保持空间中
     H :把模式空间中的内容追加至保持空间中
     g(get):从保持空间取出内容覆盖至模式空间
     G:从保持空间取出内容追加至模式空间
     x:把模式空间中的内容与保持空间中的内容进行互换
     n:读取匹配到的行的下一行覆盖至模式空间
     N: 读取匹配到的的行下一行追加至模式空间
     d:删除模式空间的行
     D:删除多行模式空间中的所有行
     例:

          sed -n ‘n;p’ FILE:显示偶数行

           sed命令的入门与进阶    

          sed ‘n;d’ FILE:显示奇数行

          sed命令的入门与进阶

          sed ‘1!G;h;$!d’ FILE:逆序显示文件内容

          sed命令的入门与进阶

          sed -n ‘1!G;h;$p’ FILE:逆序显示文件内容(和上面的命令是同样的结果)

           sed命令的入门与进阶

          sed ‘$!N;$!D’ FILE:取文件最后两行

          sed命令的入门与进阶

sed ‘$!d’ FILE:取出最后一行

sed命令的入门与进阶

          sed ‘G’    FILE:在行后面增加空白行

          sed命令的入门与进阶

          sed ‘/^$/d;G’ FILE : 把多个空白行合并为一个空白行,并在每一行追加一个空白行

          sed命令的入门与进阶

               
         

原创文章,作者:人字拖,如若转载,请注明出处:http://www.178linux.com/71180

(0)
人字拖人字拖
上一篇 2017-03-16
下一篇 2017-03-16

相关推荐

  • RAID简述和Linux软RAID配置

    RAID简述和Linux软RAID配置 PS:仅为课程练习,原理和配置可能有误,仅供参考,谢谢; 1.RAID功能简述     RAID,全称(Redundant Arrays of Inexpensive Disk或Redundant Arrays of Independent Disk),现在一般多用于后面那个称呼,独立磁盘冗余阵列。RAID的基础概念大…

    Linux干货 2016-07-17
  • iptables

    iptables: Firewall:隔离工具;Packets Filter Firewall;工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件; 硬件防火墙:在硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现;  软件防火墙:应用软件处理逻辑运行于通用硬…

    Linux干货 2016-12-05
  • 10.脚本练习2

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) POST –> Boot Sequence(BIOS) –> Boot Loader(MBR)   –> Kernel+ramdisk(initrd) –> rootfs –> /sbin/init   –> (/etc/inittab…

    2017-09-20
  • 基本脚本编译

                                  …

    2017-08-05
  • 管理SYSTEMd

    核心概念unit,systemctl管理系统服务,

    Linux干货 2018-01-04
  • N22第八周作业

    1. 请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥从一个局域网接收MAC帧,拆封、校对、校验之后,按另一个局域网的格式重新组装,发往它的物理层。由于网桥是链路层设备,因此不处理数据链路层以上层次协议所加的报头。   集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把…

    Linux干货 2016-12-26

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-20 09:47

    尽量不要复制粘贴笔记