sed介绍

sed是什么

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


sed的工作原理和相关概念

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

sed-原理.png

sed的语法格式

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

options

-n 或者 --quiet 或者 --silent:仅显示经过脚本处理(执行写操作)的模式空间的内容
-e<scrpit> 或者 --expression<scrpit>:以选项中的指定的script来处理输入的文本文件;
-f<scrpit文件> 或者 --file<scrpit文件>:以选项中指定的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命令在读取下一行之前,当前行也被处理完毕,也会进行一次标准输出测试。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,237评论 2 33
  • 本文承接之前写的三十分钟学会AWK一文,在学习完AWK之后,趁热打铁又学习了一下SED,不得不说这两个工具真的堪称...
    mylxsw阅读 4,417评论 3 74
  • Linux sed命令是利用script来处理文本文件。sed可依照script的指令,来处理、编辑文本文件。Se...
    姜淑均阅读 737评论 1 2
  • Sed工具工作原理及特性 1. sed是流编辑器,每一次读取一行到内存中,即称之为模式空间(pattern spa...
    魏镇坪阅读 11,031评论 0 12
  • 08六项日精进打卡姓名:刘海北京多禾餐饮管理限公司组别 249期谦虚1组【日精进打卡第00130天】【知~学习】诵...
    七天乐餐阅读 156评论 0 0