Linux之工具------sed

本文详细介绍了sed流编辑器的基本概念、命令行格式、编辑命令、选项及其应用场景。通过具体的例子展示了如何使用sed进行文本处理,包括行的增删查改等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sed
概念:流编辑器。
在命令行基本格式
①sed [options] ‘command’ file1 file2 …….
②sed [options] -f scriptfile file1 file2 ……
sed处理的文件,既可以由命令行输入,如①。也可以编写一个脚本文件,用-f指定脚本文件。如②。
command:编辑命令格式为/pattern/action
其中pattern是正则表达式,action是编辑操作。
sed一行为基本单位,如果哪行与pattern匹配,则执行相应的action。如果没有pattern,则对要处理的文件每一行都执行action。
sed默认遵守Basic规范基本匹配
选项:
-i:将sed的结果修改源文件。(sed只是会将处理结果显示到显示器上,一般不会影响源文件。)
-n : 打印出匹配的。与后面的p命令结合使用。(sed一般会将文件内容及处理结果都打印出来。)
-e : 一次处理多个/pattren/action.
命令:
/pattern/p : 打印pattern匹配的行。
要想输出处理结果,需要加上-n选项。
这里写图片描述
/pattern/d:删除pattern匹配的行。会将文件剩余内容显示出来
这里写图片描述
/pattern/s/pattern1/pattern2/:查找符合pattern的行,将该行第一个匹配的pattern1替换为pattern2
/pattern/s/pattern1/pattern2/g:查找符合pattern的行,将改行所有匹配的pattern1替换为pattern2
pattern2中若有和pattern1中相同的字符串,可用&代替。
这里写图片描述
定址:决定对哪些行进行编辑。地址的形式可以是数字,正则表达式或二者的结合。若没有指定地址,sed会处理文件的所有行。
地址用,隔开,表示范围
比如说打印第二行到第三行的内容
这里写图片描述
sed中的缓冲区
sed在处理每行数据时,现将改行数据存到缓冲区里。分为以下两个缓冲区,分别叫做保持空间和模式空间。
模式空间:进行正则匹配和处理数据,相当与一家工厂中的流水线。
保持空间:暂时存储数据,相当于一家工厂的仓库。
说明
①一般情况下,只使用模式空间。
②处理数据在模式空间中,存储在保空间中
③显示使用下列命令,可以使用保持空间
g:将保持空间的内容拷贝到模式空间,原来模式空间的内容会清掉
G:将保持空间的内容拷贝到模式空间,追加在原来模式空间内容\n后
h:将模式空间的内容拷贝到保持空间,原来保持空间的内容会清掉
H:将模式空间的内容拷贝到保持空间,追加在原来保持空间内容\n后面
n:将下一行添加到模式空间里,原来模式空间的内容清空
N:将下一行添加到模式空间里,追加在原来模式空间的内容\n后
x:将保持空间和模式空间的内容交换
d:删除所有行,并读入下一行到模式空间
D:删除第一行
虽然保持空间不经常用,但是有时会带来很好的效果
举几个例子:
1、输出1+2+3+。。。+100
这里写图片描述
seq 100 : 输出1到100的数字,中间以\n隔开
sed ‘:a;N;s/\n/+/g;{$!ba}’ 设置标签a,N将下一行内容追加到模式空间,将\n 替换为+,如果不是(!)最后一行($),就跳(b)到a标签处,继续执行。
sed 命令多时用分号(;) 隔开
2、添加空行
这里写图片描述
G因为保持空间是空的,所以每次以追加方式将空的拷贝到模式空间内容\n后,就会有一行空的
3、模拟tac的功能(逆序打印)
tac
这里写图片描述
用sed实现
这里写图片描述
4.将文件中匹配的行添加到文件的结尾
这里写图片描述
5.交换行列
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值