sed 笔记

sed 简介

sed(stream editor)是一个流编辑器,一次处理流的一行内容。

sed 命令模式
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)

常用options

  • -n 取消默认输出,只有经过sed特殊处理行(或者动作)才会被列出来。
  • -e 多重编辑模式。在命令行中同时指定多个操作指令时才需要用到。
  • -f 指定sed脚本文件名。
  • -i 直接修改文件内容。

sed 不会直接修改原文件,要直接修改原文件有2种方式:
1. 使用 -i 选项;
2. 使用重定向,重定向的目标文件不能与输入文件相同。

sed 的处理流程

每条操作指令由pattern和procedure两部分组成,pattern一般是用 ‘/’ 分隔的正则表达式(在sed中也可能是行号),procedure则是一连串的编辑命令。

sed的处理流程简化为:
1. 读入新的一行内容到缓存空间;
2. 从指定的操作命令中取出第一条指令,判断是否匹配pattern;
3. 如果不匹配,则忽略后续的编辑命令,回到第2步继续取出下一条指令;
4. 如果匹配,则针对缓存的行执行后续的编辑命令;完成后,回到第2步继续取出下一条指令;
5. 当所有指令都应用之后,输出缓存行的内容;回到第1步继续读入下一行内容;
6. 当所有行都处理完成之后,结束。

从流程上可以看出,前一个命令的执行结果影响后一个命令的执行,命令按先后顺序执行。

继续阅读