Sed:一种流编码器,主要用来作文本处理,可以配合正则使用。处理文本原理:处理文本时,把当前处理的行存储在临时缓存区中,称为‘模式空间’(pattern space),接着根据命令处理缓冲区中的内容,处理完后,把缓冲区中的内容送往屏幕,然后接着处理下一行,循环往复,直到文本结束,整个过程不改变原文本内容,除非调用改变文本内容的命令
sed命令默认只对源文件作read操作,不作write操作
基本语法 :sed -option ‘action’ stdin
本文的所有操作都参照上图文本进行。
语法格式举例:sed -n ‘1,3p’ sed.txt 其中 -n 代表option,即选项,‘1,3p’ 就是动作,即进行的操作
上述命令的意思是 将 sed.txt(后面一概称文本)的第一到三行输出。打印结果:
常用的action
-
a:(append,猜的)在指定行下一行输出指定内容。例:
注意 sed 命令执行顺序 从左向右。action前面的内容表示对文本内容进行筛选,aciton后面的内容表示aciton操作的内容。例:1,3a 表示 筛选1-3行;a 1,3 表示 所有行的下一行输出 ‘1,3’。
-
c:(change,猜的)将指定行进行替换 例:
-
d :(delete,个人猜的)将指定行删除,d后面不跟内容 例:
-
i:(insert,猜的)指定行前面输出指定内容 例:
-
p:(paste,猜的)粘贴指定行,p后面不跟内容 例:
-
s:(substitute,猜的)替换 例: s/a/b/ 将行内的 第一个a 替换为b ,s/a/b/g 将行内所有的a替换为b
选项
- n:一般sed的语法,会默认输出来自stadin的所有内容,此选项会取消默认输出,只输出做过处理的内容。例:
- i:将修改写入原文件,不作输出。
- e:多重编辑。
- f:格式:sed -f script stdin 可以建一个脚本script ,将命令写在script里面(脚本里面不能写选项,命令不带引号),按照前面格式对stdin进行处理。
- 好啦,暂时先总结到这儿了,水平有限,不当之处,还请各位看客多多指正。