文本处理sed的使用

语法:sed【option】、、、‘script’ inputfile、、、

选项:

        -n:不输出模式空间内容到屏幕,即不自动打印
        -e: 多点编辑
        -f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
        -r: 支持使用扩展正则表达式
        -i.bak: 备份文件并原处编辑

script:

         地址定界:
                      (1) 不给地址:对全文进行处理
                      (2) 单地址:
                                      #: 指定的行
                                      /pattern/:被此处模式所能够匹配到的每一行
                      (3) 地址范围:
                                          #,#
                                          #,+#
                                          /pat1/,/pat2/
                                          #,/pat1/
                      (4) ~:步进
                                      1~2 奇数行
                                      2~2 偶数行
         编辑命令:
                      d: 删除模式空间匹配的行
                      p: 显示模式空间中的内容
                      a [\]text:在指定行后面追加文本支持使用\n实现多行追加
                      i[\]text:在行前面插入文本
                      c [\]text:替换行为单行或多行文本
                      w /path/somefile: 保存模式匹配的行至指定文件
                      r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后
                      =: 为模式空间中的行打印行号
                      !:模式空间中匹配行取反处理
s///:查找替换,支持使用其它分隔符,s@@@,s###
      替换标记:
                      g: 行内全局替换
                      p: 显示替换成功的行
                      w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
高级编辑命令:
                   h: 把模式空间中的内容覆盖至保持空间中
                   H:把模式空间中的内容追加至保持空间中
                   g: 从保持空间取出数据覆盖至模式空间
                   G:从保持空间取出内容追加至模式空间
                   x: 把模式空间中的内容与保持空间中的内容进行互换
                   n: 读取匹配到的行的下一行覆盖至模式空间
                   N:读取匹配到的行的下一行追加至模式空间
                   d: 删除模式空间中的行
                   D:删除当前模式空间开端至\n的内容(不再传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed
元字符集:

             ^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。

             $ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。

             . 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。

            * 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。

            [] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。

            [^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。

            \(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers

            & 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。

            \< 匹配单词的开始。<love 匹配包含以love开头的单词的行。

            \> 匹配单词的结束。

            x\{m\} 重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。

            x\{m,\} 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。

            x\{m,n\} 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。

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

(0)
忠神通忠神通
上一篇 2017-05-01 16:32
下一篇 2017-05-01 20:15

相关推荐

  • Bash脚本写法及变量如何使用

    Bash是什么? bash脚本是作为linux执行与内核交互的一个方便快捷的脚本语言工具。它可以帮助我们快速的解决问题。 Bash写法: 需要创建一个文件,以.sh结尾。这样就生成一个脚本文件 我们文件内容开头要以#!/bin/bash 开头,这是脚本规定的格式,目的是告诉编译器我们这个脚本是bash类型的脚本。 当上述工作都做好以后,我们就可以正式开始脚本…

    Linux干货 2017-04-10
  • N28-第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │   └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │   ├── bin
    │   └── sbin
    └── var
    ├── lock
    ├── log
    └── run
    4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    Linux干货 2017-12-11
  • N21_第四周

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 # cp -a /etc/skel/ /home/user1/ && chmod -R 7000 /home/user…

    Linux干货 2016-08-02
  • 安全与加密、申请CA证书

    本章内容 v  1、安全机制  2、对称加密  3、不对称加密 4、散列算法  5、PKI 和CA v 在互联网数据传输的过程的,数据的安全私密性是及其重要的,所以就有数据的加密和解密的过程。 数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它…

    Linux干货 2016-12-04
  • 程序包管理:rpm和yum

    rpm命令                              软件包管理 程序包管理 一、概述 (一)API:Application Program Interface  应用编程接口 ABI…

    Linux干货 2016-08-21
  • 第五周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@unclez ~]#  grep -E "^[[:space:]]+.*" /boot/grub/grub.cong 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟…

    Linux干货 2016-12-31