sed简介

sed是什么

sed是linux文本处理工具三剑客(grep,sed,awk)之一,用来处理文本的流编辑工具。主要用来编辑一个或多个文件,简化重复操作文件。


sed的工作原理和相关概念

sed是行处理的模式,针对文件内容从上往下一行一行地读取。每行的操作步骤如下示意图:

sed-原理.png


sed的语法格式

sed [OPTION]... 'script' [input-file] ...

options

-n 或者 –quiet 或者 –silent:仅显示经过脚本处理(执行写操作)的模式空间的内容 
-e 或者 –expression:以选项中的指定的script来处理输入的文本文件; 
-f 或者 –file:以选项中指定的script文件来处理输入的文本文件 
-h 或者 –help:显示帮助信息 
-V 或者 –version:显示版本信息

script

script中包含了两部分,定界符和命令处理

  • 定界符

1、空地址:表示在全文范围
2、单地址:  
    #:指定行;  
    /pattern/:被此模式所匹配到的每一行;
3、地址范围:  
    #,#:从起始行到结束行  
    #,+#:从第起始行,向后数多少行  
    #,/par1/:从起始行到pat1第一次匹配到的行  
    /pat1/,/pat2/:从pat1第一次匹配到的行到pat2第一次匹配到的行  
    $:最后一行
  • 处理命令

    d:删除当前模式空间中的内容    
    p:将当前模式空间中的内容送到标准输出
    a\text:在当前模式空间后面追加内容text,支持\n追加多行
    i\text:在当前模式空间前面插入内容text,支持\n插入多行
    c\text:把当前模式空间的内容替换为text,支持\n替换为多行
    r /PATH/FROM/FILE:读取指定文件的内容,追加到当前模式空间后面
    =:在当前模式空间前面插入当前模式空间在源文件中的行号
    !:命令前加!,给定界符取反,不在定界范围内才执行命令
    s/pat1/text/:查找替换,分隔符可自定义,如@@@,###等    
        修饰标记:        
            g:全局替换,没有此标记,只替换正则匹配到的第一项        
            w /PATH/TO/FILE:将替换后的内容保存一份至指定文件        
            p:将替换成功的内容送至标准输出

sed每次执行时还拥有一个保持空间(hold space),用来临时保存内容,开始时默认是一个空行。在模式空间和保存空间之间来回操作内容,可以实现一些很复杂的功能。下面是一些高级命令:

    h:把当前模式空间中的内容覆盖至保持空间中    
    H:把当前模式空间中的内容追加至保持空间中
    g:把保持空间的内容覆盖至当前模式空间中
    G:把保持空间的内容追加至当前模式空间中
    x:把当前模式空间和保持空间中的内容互换
    n:我的理解是对模式空间的内容执行一次输出测试,然后再覆盖读取文件下一行的内容到模式空间中
    N:我的理解是对模式空间的内容执行一次标准输出测试,然后再覆盖读取文件下一行的内容到模式空间中        
            标准输出测试(我自创的概念,见上面工作原理图):就是判断是否用了-n选项,没有则将模式空间的内容送至标准输出,否则丢弃模式空间的内容
    d:删除模式空间中的行
    D:删除模式空间中的所有行
  • 个人理解:每读行的内容对应的模式空间的内容处理完毕时,都会进行一次输出测试,而n和N命令在读取下一行之前,当前行也被处理完毕,也会进行一次标准输出测试。

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

(0)
小江小江
上一篇 2016-10-09 09:06
下一篇 2016-10-09 09:06

相关推荐

  • CentOS 6 启动流程

    CentOS6启动流程 1.加载BIOS的硬件信息,获取第一个启动设备 2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息 3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备 4.核心执行init程序,并获取默认的运行信息 5.init程序执行/etc/rc.d/rc.sysinit文件 6.启动核心的外挂模块 7.ini…

    2017-09-01
  • nginx服务

      Nginx 提供web服务,也是工作在应用层的负载均衡器,拥有强大的缓存能力。 本章主要学习,web server、web reverse proxy(http)和cache 缓存服务器使用较多的是varnish+squid: 任何缓存都是反向代理,但是varnish反向代理能力还是与nginx有很大差距。所以,varnish还是做缓存服务,而…

    Linux干货 2016-11-01
  • Hadoop hdfs 分布式文件系统

    Hadoop简介:一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件…

    Linux干货 2015-08-05
  • 关于RHEL6中ulimit的nproc限制

    ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚…

    Linux干货 2016-10-19
  • 马哥教育网络班20期+第九周博客作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash export nolginbash export otherbash for i in `grep -o…

    Linux干货 2016-08-09
  • httpd配置

    httpd配置 修改监听的IP和端口(port) 持久连接 MPM DSO(Dynamic Shared Object) main server的文档页面路径 站点访问控制 定义站点主页面 定义路径别名 设定默认字符集 日志 基于用户的访问控制 虚拟主机 httpd状态页面 使用压缩模块mod_daflate优化速度 基于IP 为每个虚拟主机至少准备一个IP…

    Linux干货 2016-12-21