sed高级命令N、D
sed高级命令N、D
N | 提前读入下一行追加到模式空间 |
---|---|
D | 删除多行模式空间中的所有行 |
N 多行操作命令
N 命令会将下一行文本内容添加到缓冲区已有数据之后(之间用换行符分隔),从而使前后两个文本行同时位于缓冲区中,sed 命令会将这两行数据当成一行来处理
[root@localhost ~]# cat sss.txt
111 222 333 444 555
555 444 333 222 111
aaa bbb ccc ddd eee
eee ddd ccc bbb aaa
[root@localhost ~]# sed '/first/{N;s/\n/ /}' sss.txt
111 222 333 444 555
555 444 333 222 111aaa bbb ccc ddd eee
eee ddd ccc bbb aaa
D 多行删除命令
sed 不仅提供了单行删除命令(d),也提供了多行删除命令 D,其作用是只删除缓冲区中的第一行,也就是说,D 命令将缓冲区中第一个换行符(包括换行符)之前的内容删除掉。如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本, 并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会像发出d命令那样启动正常的新循环。
[root@localhost ~]# cat sss.txt
On Tuesday, the Linux System
Administrator's group meeting will be held.
All System Administrators should attend.
Thank you for your attendance.
[root@localhost ~]# sed '/^$/{N ; /System/D}' lq.txt
On Tuesday, the Linux System
Administrator's group meeting will be held.
All System Administrators should attend.
Thank you for your attendance.
ttend.
Thank you for your attendance.