Press "Enter" to skip to content

文本处理工具(十六)— 文本处理三剑客之 sed 行编辑工具


Last updated on 2021年8月14日

概述

sed 全称是 Stream EDitor,它是针对行的编辑器。

从文件或者管道读取一行,然后处理一行,接着又读取一行,处理一行,这样循环来回,知道所有行都处理完成。

sed 在处理行的时候,首先将当前需要处理的行读取到临时缓冲区,有个专业术语叫模式空间,

sed 所有处理工作都是针对缓存区这一文本行进行处理,并不是直接在源文件上面修改。对模式空间的文本行执行相关处理指令之后,默认的将缓冲区文本行进行输出到屏幕。

sed 处理方式是读取一行处理一行,所以在执行效率和空间效率上面有很大的优势,速度极快,不会出来卡顿现象。

像 vim 这类编辑器,就有可能出现卡顿现象,因为它的工作方式是直接将整个文件读取到内存。

命令规则

命令语法

常用选项

如果未给出 -e、-expression、-f 或 –file 选项,则第一个非选项参数作为 sed 脚本进行解释。

全部剩下的参数是输入文件的名称;如果未指定输入文件,则读取标准输入。

地址格式

这里面包含两部分:地址、命令

支持地址

支持命令

使用范例

sed 允许使用变量替换,除了双引号包含变量会解析之外,还有三个单引号包含变量也会解析,例如:

高级特性

sed 中除了模式空间,还另外还支持保持空间(Hold Space),利用此空间,可以将模式空间中的数据,临时保存至保持空间,从而后续接着处理,实现更为强大的功能。

这意味者有两个空间可以存储当前处理的行,以及之前处理的结果。那么,我们就可以采用两个空间的数据相互交替,达到组装数据、过滤数据等效果。

常见的高级命令

高级特性范例

练习题

  • 统计一个文件里面单词出现次数,使用 sed 命令
  • 安装 httpd 软件,并且修改 httpd 软件运行用户,使用 sed 命令
  • 显示偶数行和奇数行,使用 sed 命令
  • 将奇数行合为一行,使用 sed 命令
  • 一个文件里面有三行文本,按顺序行分别是:You、I、Love,请将它们组成正确句子,使用 sed 命令

相关扩展

    发表评论