sed 是一种数据流编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区(pattern space称为“模式空间”)中,在内存中处理,完成后把该行发送到屏幕上,清理pattern space中的内容,接着重复刚才的动作,读入下一行,直到文件处理结束。文件内容并没有 改变,除非你使用重定向存储输出。 默认显示模式空间的内容。
请勿将sed这个工具理解为sed命令,而应该看作是一个包含很多命令的程序,所以后文中"sed命令"表示的是sed中的子命令,而非sed本身这个命令),这些命令通过"-e"、"-f file"传递,或者当没有指定这两个选项时,通过第一个非选项参数传递。这些传递的命令集合称为sed的执行脚本(SCRIPT),命令的执行顺序按照命令行中给定的顺序依次执行。
在SCRIPT或SCRIPT-FILE中的多个命令可以使用分号";"进行分隔,或者换行书写。但有些命令,由于它们的语法问题,导致不支持使用分号作为命令分隔符,因此只能换行书写,除非它们是SCRIPT或SCRIPT-FILE中的最后一个命令。允许命令的前面有空白字符。
sed维护两个数据缓冲空间:一直处于活动状态的模式空间(pattern space)和辅助性的保持空间(hold space)。这两个空间初始时都为空。
sed的一个循环的过程:
- 读取输入流的一行,移除该行的尾随换行符,并将其放入到pattern space中。
- 对模式空间中的内容进行匹配和处理。地址是一种条件判断代码,只有符合条件的行才会执行相应的命令。
- 自动输出