文本处理工具之sed

                     文本处理工具之sed

 sed的简介

   1、Stream EDitor, 行编辑器
        2、sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等

   3、sed所具有的功能:数据的替换、删除、新增等。sed处理的数据可能是一些关键字、也可能会是一些特定的行。sed对文本有着强大的处理功能,下面我们来一一介绍。

sed的基础使用

   1、sed的语法结构

     sed [OPTION]… {script} [input-file].. [actions]

   2、选项[OPTION]
     -r: 支持拓展正则表达式

     -n:静默模式

     -e:指定多脚本运行

     -f /path/to/scripts_file:从指定文件中读取脚本运行

     -i:直接修改源文件

   3、script脚本 :‘地址命令’

     1)地址界定

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

      2)单地址:
        #:指定的行   
        /pattern/:被此处模式所能够匹配到的每一行

      3)地址范围:
        #1,#2:表示从第#1行到#2行
        #,+n:表示从第#行开始,一直到向下的n行
        /pat1/,/pat2/:表示从第一次被模式/part1/所匹配的行开始,到第一次被模式/part2/匹配的行结束,中间所有的行
        #,/pat1/:表示从#行开始到第一次被模式/part1/匹配的行结束,中间所有的行

      (4) ~:步进 如下:
        1~2 奇数行
        2~2 偶数行

     2)sed编辑命令

        d: 删除模式空间匹配的行
        p: 显示模式空间中的内容
        a [\]text:在指定行后面追加文本支持使用\n实现多行追加
        i [\]text:在行前面插入文本
        c [\]text:替换行为单行或多行文本
        w /path/somefile: 保存模式匹配的行至指定文件
        r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后
        =: 为模式空间中的行打印行号
        !:模式空间中匹配行取反处理

     3)查找替换:

        s/part1/string/[OPTIONS]:将part1匹配到内容替换为string,根据选项进行处理。其中OPTIONS可以不加。

        其分界符可为:s###、s@@@

        常用OPTIONS:

          g:全局的

          i:不区分大小写

          w /PATH/TO/SOMEFILE:把指定内容另存至指定的文件中

          r /PATH/TO/SOMEFILE:在文件指定位置插入另一个文件的内容。

          p:显示替换成功的行

   4、sed命令使用示例:

        1)删除/etc/fstab文件中行首为#的#字符

                                    文本处理工具之sed

                                    文本处理工具之sed

        2)将/etc/fstab文件中的奇数行另存至/tmp/fstab1

                                    文本处理工具之sed

         (3)利用sed命令取出一路径的基名和路径名

                                   文本处理工具之sed

sed一些高级使用

1、sed除了由‘模式空间’,还有一个‘保持空间’

  sed的工作机制是每次读取一行至模式空间中,在模式空间中完成处理,将处理结果输出值标准输出设备。在模式空间中处理一行内容后继续处理下一行,那么对于处理过的行可能还有其它的处理,因此可以先把处理过的行‘传输’至保持空间中,然后在后续的处理中再次‘传输’至模式空间中进行再次处理。

2、sed工具支持一些高级命令运用到保持空间中。

    h: 把模式空间中的内容覆盖至保持空间中
    H:把模式空间中的内容追加至保持空间中
    g: 从保持空间取出数据覆盖至模式空间
    G:从保持空间取出内容追加至模式空间
    x: 把模式空间中的内容与保持空间中的内容进行互换
    n: 读取匹配到的行的下一行覆盖至模式空间
    N:读取匹配到的行的下一行追加至模式空间
    d: 删除模式空间中的行
    D:删除当前模式空间开端至\n的内容( 不再传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed

3、sed高级使用一些示例

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

                 文本处理工具之sed

   (2统计/etc/issue文件中每个单词的出现次数,并排序

      文本处理工具之sed
   (3将数字1到10 以’NN+1’形式输出,其中N为奇数,N+1为偶数

      文本处理工具之sed

     

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

(0)
zqzq
上一篇 2017-05-01 20:15
下一篇 2017-05-01 21:27

相关推荐

  • 文件查找作业

    1、查找/var目录下属主为root,且属组为mail的所有文件 [root@wzc ~]# find /var/ -user root -a -group mail /var/spool/mail /var/spool/mail/root 2、查找/var目录下不属于root、…

    Linux干货 2016-08-15
  • 五.Linux博客-2016年7月28日索引、硬链接、软连接、inode表、file、重定向、tr、管道、用户、组

    格式说明: 操作 概念 命令 说明及举例 五.索引、硬链接、软连接、inode表、file、重定向、tr、管道、用户、组 索引节点 原数据保存在inode table表中每个文件或目录都有一个独立的inode number(节点编号在一个分区中是唯一的,每个分区都有自己的inode table) ls -i 查看节点编号 硬链接 ln&n…

    Linux干货 2016-08-23
  • N25 – week 3 blog

    本周的blog开始使用了代码语言格式,我原本以为自然的才是最好的,orginal的才是最美的,但是我错了。。。我发现同学们都在各种markdown,各种排版。我说过我早已过了care这些的年纪,但是我不能脱离群体单独存在,所以我底下了傲娇的头。 本周开始blog标题改为英文,逼格满满,麦满分~ 下面开始第$wk_num周的作业 [root@dhcp-10-1…

    Linux干货 2016-12-19
  • 进程理论和相关工具的使用

    内核的功用 进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等     Process: 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程     UID、GID、和SELinux语境决定对文件…

    Linux干货 2017-08-28
  • LAMP快速部署及LAMP组合深入讲解-1

      lamp php php: 脚本编程语言、嵌入到html中的嵌入式web程序开发语言;基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境) 一、PHP简介 PHP是通用服务器端脚本编程语言,其主要用于web开发以实现动态web页面,它也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一…

    Linux干货 2017-06-04
  • ☞{ nfs共享mysql数据;nfs共享web资源 }

    ☞{ nfs共享mysql数据;nfs共享web资源 } MySQL基于NFS共享数据 测试环境 node1安装nfs服务 配置共享目录,设定用户权限 开启nfs服务,添加iptables规则 node2安装mysql-server(yum 安装) node2挂载nfs共享至/mydata目录,拷贝mysql数据 修改mysql-server数据目录 nod…

    Linux干货 2016-10-20