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

在末行前插入一行

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


 

我所撰写的英文版本

58. Advanced Text Processing - Stream Editor (sed)
 

引用

参见

上一篇:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值