15. 影响同一行的多个替换命令
正如我们前面讨论的,sed 执行流程是 读取、执行、打印、重复。 执行部分可能由多个 sed 命令组成,sed 将一一执行。
例如,如果您有两个 sed 命令,则 sed 将在模式空间上执行command-1
,然后在模式空间上执行command-2
。
如果command-1
更改了模式空间中的某些内容,则command-2
将在新更改的模式空间(而不是读取的原始行)上执行。
以下示例演示了在模式空间上执行两个 sed 替换命令。
将 "Developer"
更改为 "IT Manager"
,然后修改 "Manager"
为 "Director"
:
$ sed '{
s/Developer/IT Manager/
s/Manager/Director/
}' employee.txt
101,John Doe,CEO
102,Jason Smith,IT Director
103,Raj Reddy,Sysadmin
104,Anand Ram,IT Director
105,Jane Miller,Sales Director
让我们分析一下示例中第 4 行的 sed 执行流程。
-
读取:在此阶段,Sed 读取该行并将其放入模式空间中。 那么,下面就是模式空间的内容了。
104,Anand Ram,Developer
-
执行:Sed 在模式空间(即
s/Developer/IT Manager/
)上执行第一个 sed 命令。 因此,在该命令之后,以下是模式空间的内容。104,Anand Ram,IT Manager
s/Manager/Director/
)上执行第二个 sed 命令。 在该命令之后,以下是模式空间的内容。104,Anand Ram,IT Director
注意:请记住: sed
在执行第一个命令后对当前模式空间的内容执行第二个命令。 -
打印:它打印当前模式空间的内容,如下所示。
104,Anand Ram,IT Director
-
重复:它移至下一行并从步骤
#1
开始重复。