Content #
$ cat data4.txt
On Tuesday, the Linux System
Admin group meeting will be held.
All System Admins should attend.
$
$ sed 'N;
> s/System\nAdmin/DevOps\nEngineer/
> s/System Admin/DevOps Engineer/
> ' data4.txt
On Tuesday, the Linux DevOps
Engineer group meeting will be held.
All System Admins should attend.
$
由于最后一行进入模式空间后,再执行N命令会出错,从而导致命令
s/System Admin/DevOps Engineer/
并未执行,最后一行没有实现替换。
可以用感叹号来处理数据流中的最后一行文本:
$ sed '$!N;
> s/System\nAdmin/DevOps\nEngineer/
> s/System Admin/DevOps Engineer/
> ' data4.txt
On Tuesday, the Linux DevOps
Engineer group meeting will be held.
All DevOps Engineers should attend.
$
这个例子演示了如何将感叹号与N命令和美元符号($)特殊地址配合使用。美元符号表示数据流中的最后一行,因此当sed编辑器读取到最后一行时,不执行N命令,但会对所有其他行执行N命令。
From #
Linux命令行与shell脚本编程大全