sed简介及常见用法

sed是一个文本流处理器,配合正则表达式用可以实现很多文本处理操作。

和grep一样,sed是一行一行的处理的。sed处理文本时,首先会将源文件复制一份到内存中,然后将文本一行一行拿到模式空间内进行操作,最后输出到标准输出,即屏幕上。

在模式空间中,每一行都会根据用户给的条件进行匹配,匹配到了进行编辑后输出,没有匹配到,直接输出到标准输出。sed除了模式空间还有一个保持空间,能够让行在模式空间和保持空间多次进行处理,进而完成复杂的处理工作。

sed [option]...'script' [input-file]...
    script:
        地址定界、编辑命令
    常用选项:
        -n, --quiet, --slient:不输出模式空间中的内容到屏幕,也就是默认
            suppress automatic printing of pattern space:自动不输出模式空间中的内容
        -e script, --expression=script:添加可执行的脚本,用脚本来处理文本,多点编辑
            add the script to the commands to be executed.
        -f script, --expression=script:
            add the contents of script-file to the commands to be executed
        -r. --regxp-extended:支持使用扩展正则表达式
        -i[SUFFIX], --in-place[=SUFFIX]:直接编辑源文件
    地址定界:
        1.空地址:全文处理
        2.单地址:
            # :第#行
            /patter/ :被此模式匹配到的每一行
        3.地址范围:
            #,# :
            #,+# :从第#行开始的第#行
            #,/pat1/ :从第#行开始,到第一次匹配到模式的行
            /pat1/,/pat2/ :从/pat1/到/pat2/
        4.步进:~
            1~2:所有奇数行

    编辑信息(COMMANDS):
    除了用d模式,都用上-n选项
        d :将匹配到的行删除;
        p :print the current pattern space
            输出当前模式空间中的内容
        a \text:
            append text, which has each embedded newline preceded by a backslash
            追加新行,反斜线前的范围内每一行后都追加新的一行。可以用\n实现多行追加
        i \text:
            insert text,which has each embedded newline preceded by a backslash
            插入新行,反斜线前指范围内每一行前插入新的一行。可以用\n实现多行追加
        c \text:
            replace the selected lines with text,which has each embedded newline preceded by a backlash.
            将指定的行更换文本,~。~
        w /path/to/somefile:
            write the current pattern space to filename
            保存模式空间匹配到的行至指定的文件中;
        r /path/to/somefile:
            append text read from filename
            文件合并
        = :为模式匹配到的行打印行号
        ! :条件取反,在COMMAND前用;
            地址定界!编辑命令
        s/// :查找替换,其分隔符可自行指定,常用 s@@@,s###等
            替换标记:
                g :全局替换
                W /path/to/somefile:将替换成功的结果保存至指定文件中;
                P :显示替换成功的行

在hold space(保持空间)中还有一些高级命令:

高级编辑命令:
    h H    copy/append pattern space to hold space.
    g G    Copy/append hold space to pattern space.
    x      Exchange the contents of the hold and pattern spaces.
    n N    Read/append the next line of input into the pattern space.
    d      Delete pattern space.  Start next cycle.
    D      If  pattern  space contains no newline, start a normal new cycle as if the d command was issued. 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90827

(0)
耗奇害死猫耗奇害死猫
上一篇 2018-01-04 09:47
下一篇 2018-01-04 11:30

相关推荐

  • shell脚本编程之函数

      在编写脚本时经常会遇到某个任务需要重复使用的问题,需每次都要输入同样的代码是件挺烦人的事情,还好可以通过编写函数还简化这项工作。   函数其实就是给一段代码起个名字,在每次使用这段代码的时候可以直接使用函数名来调用就可以了。 一、创建函数   创建函数的格式有两种:   格式1:function 函数名{ &nbs…

    Linux干货 2016-01-05
  • cobbler实现centos7和centos6的无人值守安装

    环境:系统: CentOS 7.2  ip: 172.16.0.11 一. Cobbler安装准备 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。 Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),…

    Linux干货 2017-06-04
  • 课堂练习之 “;” 用法

    作业:如何实现前一条命令执行成功,才会执行后面一条命令,以及前一条命令执行失败才会执行后一条命令。 首先,多条命令一起执行的方法有几种。   1.用;隔开,不会判断前一条命令是否执行成功或失败。   2.用&&隔开,前面命令执行成功后,才会执行后面的命令。     3.用||或|隔开,前面命令执行失败后…

    2017-07-15
  • 作业——2016-10-17

    1 生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。     将系统时间同步到硬件时间的命令是hwclock -s 2 生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在管理工具退出的情况下,脚本依然能正常运行。     screen -S work  进去后开始做工作,暂时离开时…

    Linux干货 2016-10-18
  • lvs 基本概念

    LVS(linux virtual machine) 的简写,是一个虚拟的服务器集群系统,主要用于4层负载均衡。 宗旨: 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器. 很好的可伸缩性(Scalability) 很好的可靠性(Reliability),应该还是高可用吧 很好的可管理性(Manageability…

    Linux干货 2015-09-14
  • 计算机基础与linux入门

    计算机硬件组成:     运算器:主要完成算术运算,逻辑运算     控制器:控制指令的执行序列,根据指令的功能给出实现指令功能所需要的控制信号     存储器:存放程序以及一些数据     &nbs…

    Linux干货 2015-12-19

评论列表(1条)

  • 马哥教育
    马哥教育 2018-01-07 18:02

    博文内容上简单了点,sed还是有蛮多知识可以总结的~可以扩充一下,继续加油哈~