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. 当所有行都处理完成之后,结束。
从流程上可以看出,前一个命令的执行结果影响后一个命令的执行,命令按先后顺序执行。