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

相关推荐

  • 马哥教育网络班20期+第一周课程练习

    一、计算机的组成及其功能。 计算机是由几个单元所组成,输入单元,输出单元,运算器,控制器,存储器,5大单元组成  1、运算器 又称运算器又称算术逻辑单元,它是计算机对数据进行加工处理的部件,包括算术运算(加、减、乘、除等)和逻辑运算(与、或、非、异或、比较等)。 2、控制器 负责从存储器中取出指令,并对指令进行译码;根据指令的要求,按时间的先后顺序…

    Linux干货 2016-06-23
  • 程序包管理及定时任务

    程序包管理及定时任务

    Linux干货 2018-01-01
  • 通过view实现智能DNS

    DNS策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的IP地址,然后跟DNS服务器内部的IP表匹配一下,看看用户的类型,然后给用户返回对应的IP地址。

    Linux干货 2017-10-03
  • Ansible中文权威

    福利贴 运维神器 Ansible 本土化在际,除了每日分享,定期更新外,还有大虾不定期解惑,更多福利可关注  http://www.178linux.com/doc/ansible/  或 扫描二维码入( 372011984 )群关注.

    Linux干货 2015-08-13
  • Linux 之LVM

    一 LVM 简介:     LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。LVM的工作原理其…

    Linux干货 2016-03-01
  • 【招聘福利】普景/上海/运维工程师/8K起/双休/五险一金

    岗位要求:  经验可无,要求熟悉LANMP、zabbix的配置和维护  了解SQL语句  熟悉shell、会python 更佳岗位职责:  1. 负责zabbix的配置和维护,发现问题及时处理(如果你是有经验的童鞋,找出或者写出如Centreon类的软件优化邮…

    Linux干货 2016-04-15