58. 高级文本处理 - 流编辑器(Sed)

开篇词

我们可以使用 Linux 提供的 sed 流编辑器来逐行过滤及转换文本。
 

sed 命令选项

这里是 sed 命令的一些选选项。

选项

选项 用途
-n--quiet--slient 忽略自动输出。
-e script--expression=script 添加脚本。
-f script-file--file=script-file 添加脚本文件内容。
-r--regexp-extended 使用扩展正则表达式。

命令

零- 或 一- 地址命令

命令 用途
a \text 在指定行后追加文本。
i \text 在指定行前追加文本。
r filename 从文件名追加文本。

接受地址范围的命令

命令 用途
c \
d 删除匹配的行。
p 输出匹配的行。
s/regexp/replacement/ 将内容替换成 regexp 通过 replacement 内容来匹配到的内容,在末尾追加 g 意思是全局匹配,在末尾追加 i 意思是无视大小写。
w filename 将指定内容写至文件名。

地址

地址 用途
number 匹配指定行号。
first~step 匹配以 first 行开始的每一 step 行。
$ 匹配末行。
/regexp/ 输出匹配正则表达式的行。
addr,addr2 输出从 addr1addr2 行的内容。
addr1,-N 输出从 addr1N 行的内容。

 

例子

在开始之前,我们准备一些测试内容:

printf '%s\n' \
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nisi tellus,' \
'egestas sed dolor nec, eleifend venenatis mi. Mauris ac ligula' \
'scelerisque libero interdum varius. Aenean nec arcu nec turpis' \
'commodo mollis. Morbi suscipit felis libero, eu sollicitudin justo' \
'condimentum id. Praesent eu metus rutrum, varius leo malesuada,' \
'varius sapien. Vestibulum blandit, dolor bibendum bibendum ultricies,' \
'ipsum velit pretium arcu, eu maximus augue massa vitae justo. Etiam' \
'elit sapien, placerat quis libero a, tincidunt ornare erat. Praesent eu nibh' \
'ac sem mattis tincidunt. Aliquam erat volutpat. Nulla egestas dui ac urna' \
'convallis, vel egestas lectus ultrices. Morbi sit amet quam eget tortor' \
'laoreet laoreet id non libero.' > sed_file

从第一行配至第五行

sed -n '1,5p' sed_file

匹配末行

sed -n '$p' sed_file

在第一、二及三行后追加行

sed '1,3a \A Line After Line One, Two and Three' sed_file

58. 高级文本处理 - 流编辑器(Sed)_第1张图片

在末行前插入一行

sed '$i \A Line Before Last Line' sed_file

58. 高级文本处理 - 流编辑器(Sed)_第2张图片
 

我所撰写的英文版本

58. Advanced Text Processing - Stream Editor (sed)
 

引用

  • sed,一个流编辑器
  • SED(1)
     

参见

上一篇:

  • 57. 高级文本处理 - grep、egrep

想看手册的其他内容?请访问该手册的所属专栏:《Linux 管理员手册:既简单又深刻

你可能感兴趣的:(Linux,管理员手册)