- Sed 教程
- Sed - 主页
- Sed - 概述
- Sed - 环境
- Sed - 工作流程
- Sed - 基本语法
- Sed - 循环
- Sed - 分支
- Sed - 模式缓冲区
- Sed - 模式范围
- Sed - 基本命令
- Sed - 特殊字符
- Sed - 字符串
- Sed - 管理模式
- Sed - 正则表达式
- Sed - 有用食谱
- Sed 有用资源
- Sed - 快速指南
- Sed - 有用资源
- Sed - 讨论
流编辑器 - 模式范围
在上一章中,我们学习了 SED 处理地址范围的方式。本章介绍了 SED 如何处理模式范围。模式范围可以是简单的文本或复杂的正则表达式。我们举个例子。以下示例打印作者保罗·科埃略的所有书籍。
[jerry]$ sed -n '/Paulo/ p' books.txt
执行以上代码后,你将获得以下结果
3) The Alchemist, Paulo Coelho, 197 5) The Pilgrimage, Paulo Coelho, 288
在以上示例中,SED 针对每一行进行操作,并且仅打印与字符串 Paulo 匹配的行。
我们还可以将模式范围与地址范围结合起来。以下示例从 Alchemist 的第一个匹配项开始打印行,一直持续到第五行。
[jerry]$ sed -n '/Alchemist/, 5 p' books.txt
执行以上代码后,你将获得以下结果
3) The Alchemist, Paulo Coelho, 197 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 5) The Pilgrimage, Paulo Coelho, 288
我们可以使用 Dollar($)字符来打印找到模式的第一个匹配项之后的所有行。以下示例查找模式 The 的第一个匹配项,然后从文件中立即打印剩余的行
[jerry]$ sed -n '/The/,$ p' books.txt
执行以上代码后,你将获得以下结果
2) The Two Towers, J. R. R. Tolkien, 352 3) The Alchemist, Paulo Coelho, 197 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 5) The Pilgrimage, Paulo Coelho, 288 6) A Game of Thrones, George R. R. Martin, 864
我们还可以使用逗号(,)运算符指定多个模式范围。以下示例打印介于模式 Two 和 Pilgrimage 之间的所有行。
[jerry]$ sed -n '/Two/, /Pilgrimage/ p' books.txt
执行以上代码后,你将获得以下结果
2) The Two Towers, J. R. R. Tolkien, 352 3) The Alchemist, Paulo Coelho, 197 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 5) The Pilgrimage, Paulo Coelho, 288
此外,我们可以在模式范围内使用加号(+)运算符。以下示例查找模式 Two 的第一个匹配项,然后打印其后的 4 行。
[jerry]$ sed -n '/Two/, +4 p' books.txt
执行以上代码后,你将获得以下结果
2) The Two Towers, J. R. R. Tolkien, 352 3) The Alchemist, Paulo Coelho, 197 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 5) The Pilgrimage, Paulo Coelho, 288 6) A Game of Thrones, George R. R. Martin, 864
我们在此仅提供了一些示例,帮助你熟悉 SED。你始终可以通过自行尝试一些示例来了解更多信息。
广告