第 5 章 GNU SED流编辑器

目录

5.1. 介绍
5.1.1. 什么是sed?
5.1.2. sed命令
5.2. 交互编辑
5.2.1. 打印包含pattern的行
5.2.2. 删除包含pattern的输入行
5.2.3. 行的范围
5.2.4. 用sed来查找替换
5.3. 非交互编辑
5.3.1. 从文件读取sed命令
5.3.2. 写输出文件
5.4. 总结
5.5. 练习

摘要

本章结束你会了解到以下话题:

  • 什么是 sed

  • sed 的交互使用

  • 正则表达式和流编辑

  • 在脚本中使用 sed 命令

[注意] 这仅仅是一个介绍

这些说明远不够完整,不能够作为如何使用 sed 的手册。本章只含有为了在下一章展示一些更为有趣的话题,而且因为每个强力用户应该掌握一些基本的知识来使用这个编辑器完成些工作。

需要详细信息,请见 sed 信息和帮助页面。

5.1. 介绍

5.1.1. 什么是sed?

流编辑器 是用来从文件读取文本或者从管道实现基本的变化。结果送到标准输出。 sed 命令的语法不指定输出文件,但是结果可以通过使用输出重定向来写入到文件中。编辑器并不改变原来的文件。

sed 和其它编辑器比如 vised的区别在于它能够过滤来自管道的输入。在编辑器运行的时候你不要去干涉它;所以 sed常常被称作 批编辑器 。此特性允许你在脚本中使用编辑命令,极大的方便了重复性编辑任务。当面对文件中大量的文本替换的时候, ed 将是一个极大的帮助。

5.1.2. sed命令

sed 程序可以通过使用正则表达式来实现文本的模板替换和删除,就和使用 grep 一样,见 第 4.2 节 “使用grep的例子”

编辑命令和 vi 编辑器的命令很相近:

表 5.1. Sed编辑命令

命令 结果
a\ 在当前行后面增加文本。
c\ 用新的文本替换当前行。
d 删除文本。
i\ 在当前行之前插入文本。
p 打印文本。
r 读取一个文件。
s 搜索并且替换文本。
w 写入一个文件。

除了编辑命令,你也可以给 sed加上选项。见下表:

表 5.2. Sed选项

选项 效果
-e SCRIPT 把SCRIPT指定的命令加入到在处理输入的时候运行的系列命令。
-f 把包含在 SCRIPT-FILE 文件中的命令加入到处理输入的时候运行的系列命令之中。
-n 安静模式。
-V 打印版本信息然后退出。

sed info页面包含更多信息;这里我们只列出了最常用的命令和选项。