Linux三剑客之sed

sed:全称stream EDit 行文本编辑器

作用:是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在模式空间,接着用 sed命令处理缓冲区中的内容,处理完成后,把模式空间的内容输出到标准输出。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 Sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

sed两种存贮空间

    模式空间:为处理文件中一行内容的一个临时缓冲区。处理完一行之后就会把模式空间中的内容打印到标准输出,然后自动清空缓存。

    保存空间:sed中的另外一个缓冲区,此缓冲区正如其名,不会自动清空,但也不会主动把此缓冲区中的内容打印到标准输出中。

用法:sed [option] … script  inputfil

    option:

        – n:不输出模式空间内容的自动打印
        –  e: 多点编辑(用法sed -e script -e script)
        – f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本
        – r: 支持使用扩展正则表达式
           -i: 原处编辑(将原文件进行修改),保存原文的办法 -i.bak 会将原文的备份成.bak文件再进行修改

    script:

        地址命令:

            地址定界:

            (1) 不给地址:对全文进行处理

            (2) 单地址:
                n: 指定的行
                /pattern/:被此处模式所能够匹配到的每一行
            (3) 地址范围:
                n,m:n到m行进行处理
                n,+m:n到n+m行
               /pat1/,/pat2/:从第一次匹配pat1的行到到第一次匹配pat2的行
               #,/pat1/
            (4) ~:步进
                1~2 奇数行
                2~2 偶数行

        编辑命令:

            d:删除模式匹配的行

            p:显示模式空间中的内容

            a \text:z在文件的后面追加文本,支持\n多行追加

            -i \text:在文本的前面追加内容,支持\n多行追加

            c \test:将匹配行的内容替换为test

            w :保存匹配的行到指定路径

            r:读取文件到指定行的行尾

            =:为模式匹配的行打印行号

            !:匹配模式空间的行取反

        sed命令之查找替换

            格式:s@查找内容@替换内容@替换标记 或s///或者s###

            替换标记:g全局查找并替换

                 p:结合-n使用,显示打印替换成功的行

                 w:将替换成功的行保存到文件

        sed 命令之高级编辑命令

            

              h:把模式空间的内容覆盖到保存空间

           H:把模式空间的内容追加到保存空间

           g:把保存空间的内容覆盖到模式空间

           G:把保存空间的内容追加到模式空间

           x:模式空间和保存空间的内容互换

           n: 读取匹配到的行的下一行覆盖至模式空间
           N:追加匹配到的行的下一行至模式空间
           d: 删除模式空间中的行
           D:删除当前模式空间开端至\n的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed

sed用法高级编辑举例:

    一、只打印偶数行

    Linux三剑客之sed

     

     二、利用sed实现tac命令功能,将文章倒叙打印出来

    Linux三剑客之sed

     三、只输出最后两行

    18.png

    四、只打印最后一行

    

    [#52#root@centos6 /testdir]#sed '$!d' f1

    五、在每行后面添加空行

    Linux三剑客之sed

    六、清空文件内容

    Linux三剑客之sed

    七、将每个偶数行打印两次

    sed  "n;p" 文件名

sed 用法练习:

    

一、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符

1.png

1.png

二、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

       2.png

三、在/etc/passwd每一行行首增加#号
      3.png  

四、在/etc/fstab文件中不以#开头的行的行首增加#号

      5.png

五、保留/etc/fastab文件中包含#号的行,不包含的删除

4.png

六、处理/etc/fstab路径,使用 sed命令取出其目录名和基名

     6.png

七、利用 sed 取出 ifconfig命令中本机的IPv4地址
  7.png

八、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数   8.png

9.png

10.png

          

            

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

(0)
wangnannanwangnannan
上一篇 2016-08-11 20:48
下一篇 2016-08-12 09:01

相关推荐

  • Mariadb数据库复制系列(四):复制过滤器的实现

       实验四:复制过滤器的实现 复制过滤器的作用是让从节点仅复制主节点的指定的库,或指定数据库的指定表,而不是全部复制。其配置方式有两种,一种是在主节点上配置,通过定义主节点只记录部分库或表产生的二进制日志时间来实现;一种是通过从节点上配置,当复制了主节点的所有的二进制日志数据后,在SQL线程执行时,只执行指定的库或表相关的二进制日志时间;一般采取在从节点上…

    Linux干货 2016-11-24
  • BT雷人的程序语言

    这个世界从来都不会缺少另类的东西,人类自然世界如此,计算机世界也一样。编程语言方面,看过本站《6个变态的C语言Hello World程序》的朋友们一定对BT和另类不会陌生,但那都是些小儿科,真正的BT和另类要是从语言级上来完成。让我们来看看其中一个比较另类的语言BrainFuck。看到这个程序语言的名字,请不要以为这是一个搞笑的语言,这是一个“严肃事情”,请…

    Linux干货 2015-04-03
  • Linux LVM介绍及管理

    什么是LVM? LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,用来提高磁盘分区管理的灵活性。系统管理员可以通过LVM轻松的管理磁盘分区,如:将若干个磁盘分区或物理磁盘连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以…

    Linux干货 2016-08-30
  • 文件查找工具

    文件查找     我们常常需要知道哪个文件放在哪里,才能够对该文件进行一些修改或维护等动作。 有些时候某些软件配置文件的文件名是不变的,但是各发行版 放置的目录则不同。 此时就得要利用一些搜寻指令将该配置文件的完整文件名捉出来,这样才能修改。     比较实用的两个文件查找工具l…

    Linux干货 2016-08-21
  • gitlab-ce并发超过30引起ip被封1小时的问题

    系统环境描述 System information System:     Ubuntu 14.04 Current User:   git Using RVM:  no Ruby Version: …

    Linux干货 2015-09-06
  • Docker 之初次体验

    一、Docker 简介  lxc linux container,openvz  容器中各虚拟机只有一个内核,而是多个用户空间  在库中完成虚拟化,比如wine 或者在windows中运行bash  在应用程序的运行级别提供虚拟化,比如jvm   pstree , pid 为1 的进程  …

    Linux干货 2015-01-16

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-12 12:30

    文章内容饱满。图文结合精密,对sed的工作原理可以尝试着通过画图来展示给用户,这样会更直观明了。