Sed编辑器高级部分
前一篇文章 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8tgF6eS6-1593678401710)(https://blog.csdn.net/Leslie_LN/article/details/106852597)]我们介绍的所有sed编辑器命令都是针对的***一行数据***进行操作的;假如我们要匹配查找“this is leslie”短语,但如果这个短语分布在两行,用普通sed编辑器命令来处理文本就不可能成功;针对这种情况,sed编辑器包含了三个处理多行文本的特殊命令:
- N:将数据下一行加进来创建一个多行组来处理
- D:删除多行中的一行
- P:打印多行中的一行
1.1 多行命令
1.1.1 next命令
1.单行next命令
小写的n命令:告诉sed编辑器移动到数据流中的下一行文本
流程:
(1)、查找匹配行
(2)、移动到下一行
(3)、执行命令行列表命令
- 合并文本行
单行的next命令会将数据流中的下一文本行移动到模式空间;多行的next命令会将下一行添加到模式空间中已有的文本后,将数据流中两行文本合并到同一个模式空间中,文本仍然用换行符分隔,但sed编辑器现在会将两行文本当做一行文本处理;
如:
- 查找含有first的那行文本,读入模式空间
- N命令将下一行文本合并到first那行后面
- 替换命令将换行符替换为空格,文本文件中的两行在编辑器的输出中成了一行
***另外一个典型应用:***替换位于两行文字的文本短语
on Tuesday,the Linux System
Administrator's group meeting will be held.
Thank you for your attendance.
All System Administrators should attend.
这儿替换System Administrator’s,注意第一处是位于两行之间,第二处是位于最后一行;