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

相关推荐

  • bash脚本编程之数组、高级字符串处理、高级变量操作、用户环境配置

    概述:     承接之前脚本编程部分,本篇将介绍一下脚本编程基础语法的最后一部分内容,具体分为:         1、数组简介         2、高级字符串处…

    Linux干货 2016-08-24
  • N25-第二周博客作业

    1.linux上的文件管理命令:   cp命令:copy                 源文件;目标文件;  单源复制:cp [option]… [-T]  SOURCE DEST       &…

    Linux干货 2016-12-12
  • 文本处理三剑客–sed使用详解

    处理文本的工具sed Stream EDitor     行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。…

    Linux干货 2017-05-21
  • LINUX–命令的格式、类型、别名的概述及运用

    命令格式       COMMAND [OPTIONS…] [ARGUMENTS..]      [OPTIONS..] 选项:用于启用或关闭命令的某个或某些功能                &n…

    2017-05-21
  • 安装 VMware Workstation

    1.第一步 打开安装包所在位置 2.第二步 开始安装 ai      上面的路径看个人习惯修改,然后点击下一步 3.安装完成后,点击输入许可证秘钥  打开Vmware注册码生成器  安装成功

    2017-07-11
  • N26_第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 演示: [root@joylin test]# who|cut -d” ” -f1|uniq root gentoo [root@joylin test]# who|cut -d” ” -f1|uniq -c 5 root 1 gentoo 或者 [root@joyl…

    Linux干货 2017-02-21