sed(stream editor)流编辑器,它是一个非交互式文本编辑器,客队文本文件和标准输入进行编辑,是将一系列编辑命令作用用一批文本文件的理想工具。
sed使用于以下三种场合:
编辑相对交互式文本编辑器而言太大的文件。
编辑命令太复杂,在交互式文本编辑器中难以输入的情况。
对文件扫描一遍,但是需要执行多个编辑函数的情况。
注意:sed只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件。因此,如果需要保持改动内容,需要将输出重定向到另一个文件。
sed [选项] 'sed命令' input->file > result->file
1、sed命令常用选项
选项 | 意义 |
-n | 不打印所有行到标准输出 |
-e | 表示将下一个字符串解析为sed编辑命令 |
-f | 表示正在调用sed脚本文件 |
2、sed命令定位文本的方法
x: 为指定行号
x,y: 指定从x到y 的行号
/pattern/: 查询包含模式的行
/pattren/pattern/: 查询包含两个模式的行
/pattern/,x: 从与pattern的匹配行到x号行之间的行
x,/pattern/: 从与x号行到pattern的匹配之间的行
x,y: 查询不包含x和y行号之间的行
3、sed编辑命令
p: 打印匹配航
=: 打印文件行号
a\: 在定位行号后追加文本信息
i\: 在定位行号之前定位文本信息
d: 删除定位行
c\: 用新文本替换定位文本
s: 使用替换模式替换相应模式
r: 从另一个文件中读文本
w: 将文本写入到一个文件
y: 变换字符
q: 第一个模式匹配完成后退出
{}: 定位执行的命令组
n: 读取下一个输入行,用下一个命令处理新的行
h: 将模式缓冲区的文本复制到保持缓冲区
H: 将模式缓冲区的文本追加到保持缓冲区
x: 互换模式缓冲区和保持缓冲区的内容