Sed提供了被当作命令的两个特殊字符。本章说明了这两个特殊字符的使用。尝试使用这些命令,考虑有一个文本文件books.txt待处理,它有以下内容:

1) A Storm of Swords, George R. R. Martin, 1216
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

= 命令

=命令将行号打印到标准输出流。下面给出的是=命令的语法:

[address1[,address2]]=

这里address1 和 address2分别为起始和结束地址,其可以是行号或模式串。这两个地址是可选参数,如果不提供它们作为前缀=命令,如下图所示,将打印的所有行的行号:

[jerry]$ sed '=' books.txt 

当执行上面的代码,会得到如下结果:

1
1) A Storm of Swords, George R. R. Martin, 1216
2
2) The Two Towers, J. R. R. Tolkien, 352
3
3) The Alchemist, Paulo Coelho, 197
4
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5
5) The Pilgrimage, Paulo Coelho, 288
6
6) A Game of Thrones, George R. R. Martin, 864

下面的命令打印首4行的行号和剩余不带行号:

[jerry]$ sed '1,4=' books.txt 

当执行上面的代码,会得到如下结果:

1
1) A Storm of Swords, George R. R. Martin, 1216
2
2) The Two Towers, J. R. R. Tolkien, 352
3
3) The Alchemist, Paulo Coelho, 197
4
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

下面的例子打印包含模式“Paulo”的行号。

[jerry]$ sed '/Paulo/=' books.txt 

当执行上面的代码,会得到如下结果:

1) A Storm of Swords, George R. R. Martin, 1216
2) The Two Towers, J. R. R. Tolkien, 352
3
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5
5) The Pilgrimage, Paulo Coelho, 288
6) A Game of Thrones, George R. R. Martin, 864

下面的例子将打印仅在最后一行的行号:

[jerry]$ sed '$=' books.txt

当执行上面的代码,会得到如下结果:

1) A Storm of Swords, George R. R. Martin, 1216
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
6) A Game of Thrones, George R. R. Martin, 864

下面的例子仅打印对所有行的行号:

[jerry]$ sed -n '=' books.txt

当执行上面的代码,会得到如下结果:

1
2
3
4
5
6

下面的例子打印文件中的行的总数:

[jerry]$ sed -n '$=' books.txt

当执行上面的代码,会得到如下结果:

6

& 命令

Sed 支持特殊字符和存储匹配的模式,每当一个模式匹配成功。它经常被用于替代命令。看看如何能够利用这种高效的特点。

在book.txt文件中的每一行编号。添加词语数量在每一行的开头。下面的例子说明了这一点:

[jerry]$ sed 's/[[:digit:]]/Book number &/' books.txt

当执行上面的代码,会得到如下结果:

Book number 1) A Storm of Swords, George R. R. Martin, 1216
Book number 2) The Two Towers, J. R. R. Tolkien, 352
Book number 3) The Alchemist, Paulo Coelho, 197
Book number 4) The Fellowship of the Ring, J. R. R. Tolkien, 432
Book number 5) The Pilgrimage, Paulo Coelho, 288
Book number 6) A Game of Thrones, George R. R. Martin, 864

这个例子是很简单的。首先寻找一个数字,这是行号的第一次出现(这就是为什么使用[[:数字:]])和桑达自动存储在特殊字符和匹配模式。在第二步骤中,我们将插入每个匹配的模式,也就是说,每行之前之前词语的数量。

再举一个例子。在book.txt文件,最后一个数字是书的页数。在这之前加上“Pages=”。要做到这一点,找到数字的最后一次出现,并用“Pages=&”代替。这里,&存储匹配模式,即,页面的数量

[jerry]$ sed 's/[[:digit:]]*$/Pages = &/' books.txt 

当执行上面的代码,会得到如下结果:

1) A Storm of Swords, George R. R. Martin, Pages = 1216
2) The Two Towers, J. R. R. Tolkien, Pages = 352
3) The Alchemist, Paulo Coelho, Pages = 197
4) The Fellowship of the Ring, J. R. R. Tolkien, Pages = 432
5) The Pilgrimage, Paulo Coelho,Pages = 288
6) A Game of Thrones, George R. R. Martin, Pages = 864

从目前来看,只记得[[:数字:]]* $找到数字的最后出现。在该章中的“正则表达式中,我们将探讨更多的正则表达式。

转载于:https://www.cnblogs.com/wangshangyin/p/5190916.html

sed教程(七)之特殊字符相关推荐

  1. MVC5+EF6 入门完整教程七

    原文:MVC5+EF6 入门完整教程七 本篇我们针对表格显示添加一些新功能. 前面我们已经讲解过表格显示数据了,现在我们添加三个常用功能: 对显示结果进行排序.过滤.分页. 文章提纲 理论基础/前置准 ...

  2. MongoDB 教程七: MongoDB和PHP结合开发

    视频:MongoDB 教程七: MongoDB和PHP结合开发 Linux上安装 MongoDB PHP扩展 在终端上安装 你可以在linux中执行以下命令来安装MongoDB 的 PHP 扩展驱动 ...

  3. c语言第七章函数笔记,我的C语学习笔记-C语言教程(七).doc

    我的C语学习笔记- C语言教程(七) C语言教程---第一章: C语言概论 C语言教程---第二章: 数据类型.运算符.表达式 C语言教程---第三章: C语言程序设计初步 C语言教程---第四章: ...

  4. 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解

    原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...

  5. 静态时序分析简明教程(七)]端口延迟

    端口延迟 一.写在前面 1.1 快速导航链接· 二.端口延迟 2.1 输入有效 2.2 输出有效 2.3 set_input_delay 2.3.1 -clock clock_name 2.3.2 - ...

  6. ASP.NET 5系列教程(七)完结篇-解读代码

     在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]&quo ...

  7. 黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block

    黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block 原文:黄聪:Microsoft Ent ...

  8. 米思齐(Mixly)图形化系列教程(七)-while与do……while

    目录 while循环的执行过程 while循环流程 do--while循环流程 举例 break与continue 教程导航 联系我们 while循环只要循环条件为真就一直执行循环体 while循环的 ...

  9. Sed教程(四):基本命令、特殊字符、字符串

    本教程将介绍一些有用的sed命令和使用示例.考虑一下我们有一个文本文件books.txt待处理,它有以下内容: 1) A Storm of Swords, George R. R. Martin, 1 ...

最新文章

  1. OCP换考题了,052新考题及答案整理-第17题
  2. Rundll32.exe文件详解(显示我的电脑 取消自动登录)
  3. Linux记录-mysql参数优化
  4. 你知道几句?Linux之父十大名言
  5. ResNeXt核心思想
  6. linux命令行用户登录,Linux终端以及用户登录相关命令
  7. 《项目经验》静态页面图片找不到
  8. 开始时间和结束时间,用例设计
  9. php制作国旗头像图片,不要再@微信官方了,自己动手一秒制作国旗头像
  10. LK_Novel_DL 轻国小说下载工具 Docx Python
  11. 链家二手房信息爬取(内附完整代码)
  12. Android开发中遇到的坑
  13. 【精华】PS抠logo技巧
  14. RabbitMQ学习记录 - Direct之Routing模式
  15. Python基础知识——变量与运算符
  16. 服务器被黑客攻击和被挖矿之后的SSH安全防御 | SSH security defense after server is hacked and mined
  17. php后端上传文件,php实现文件上传方法_后端开发
  18. B端产品客户画像的一点感悟
  19. 简洁,简单,再简化...
  20. 键盘分类 红黑青茶轴

热门文章

  1. 如何利用循环代替递归以防止栈溢出(译)
  2. ARM中C和汇编混合编程及示例
  3. hihoCoder #1468 : 2-SAT·hihoCoder新春晚会(2-SAT 输出字典序最小的方案)
  4. 阿里云监控插件安装 | 非阿里云服务器安装指南
  5. tensorflow 之 最近用到的几个小操作tf.reshape,tf.convert_to_tensor,tf.where
  6. pytorch 之 分开安装 torch 和 torchvision
  7. c++ 自定义比较函数,运行时发生segmentation fault
  8. 高级程序员值得一看的33本编程书籍
  9. 非二进制字符串数据:CHAR,VARCHAR,TEXT
  10. 浅谈数据仓库建设中的数据建模方法