sed 的工作方式

sed 程序是一个从标准输入接收其输入的流编辑器,它按命令文件中命令的指示更改输入,并将生成的流写至标准输出。

如果不提供命令文件并且不将任何标志与 sed 命令一起使用,那么 sed 程序会将标准输入复制到标准输出而不进行更改。 该程序的输入有两个来源:

计划 描述
输入流 (input stream) 来自一个或多个文件或直接从键盘输入的 ASCII 字符流。 该流就是要编辑的数据。
命令 一组地址和所要执行的相关命令,通用格式如下:
[Line1 [,Line2] ] command [argument]
参数 Line1Line2 称为地址。 地址可以是在输入流中匹配的模式,或者是输入流中的行号。

通过使用 -e 标记,还可以随 sed 命令输入编辑命令。

sed 编辑时,它一次将输入流的一行读入内存中的一个存储块(称为模式空间)。 当一行数据在模式空间中时,sed 将读取命令文件并试图用命令文件中的地址与模式空间中的字符匹配。 如果找到与模式空间中的某些字符匹配的地址,那么 sed 执行与该地址匹配的那部分模式空间上的地址的相关命令。 该命令会导致模式空间的内容被更改,然后成为以下所有命令的输入。

sed 已经设法使命令文件中的所有地址与该模式空间的内容匹配时,它将模式空间的最终内容写入标准输出。 然后它从标准输入读取新的输入行并在命令文件的开始处启动进程。

某些编辑命令会更改进程操作的方式。

sed 命令一起使用的 标志 也可以更改命令的操作。