sed的使用详解
Sed默认不直接修改源文件而是通过管道或者文件读取内容将其复制到称之为模式空间的缓冲区,其指令在这个模式空间内完成并打印到屏幕上。
语法格式:
上面提到定位以行尾单位,那么行暂且定义它为地址,也就是操作对象
地址的范围有一下集中格式
n #指定唯一行号
1~2 #指定从1行开始,间隔为2也就是
$ #指定最后一行
/正则表达式/ #匹配正则表达式的操作对象
\a正则表达式a #匹配\a和a之间的正则表达式
3,5 #匹配3-5行
1,+10 #匹配1和1后面的10行内容
sed的使用选项
Sed [选项] [脚本指令] [输入文件]
选项: -n #静默输出,不打印模式空间的内容,默认情况下是自动打印的
-e 脚本 #允许多个脚本指令被执行
-f #从文件中读取指令
-l #输出的行长度
-r #扩展正则表达式
-I #直接修改源文件
指令: a (append) #追加
d (delete) #删除
s (substitution)#替换
c #更改
y #按字符替换
p #打印
q #退出
i #插入
l #打印(显示非打印字符)
L #打印(显示打印字符)
r #读入文件内容
我们找一个文件,然后来操作下:
例:第一行后追加“This is a example”
[root@pan-S~]# sed "1a This is a example" /opt/fstab_Mrpan
例:第6行前追加“This isa example”#注意源文件发生改变了
[root@pan-S~]# sed -i "6i This is a example" /opt/fstab_Mrpan
例:替换命令
[root@pan-S~]# sed "s/defaults/Mr.pan/g" /opt/fstab_Mrpan
[root@pan-S~]# sed -i "3s/fstab/fstab_Mr.pan/g" /opt/fstab_Mrpan
例:更改命令
[root@pan-S~]# sed "/pan/c exit" /etc/passwd | more
例:利用正则表达式
匹配包含fstab的行单位
[root@pan-S~]# sed -i "/fstab/a This is a example" /opt/fstab_Mrpan
[root@pan-S~]# sed -n "/^$/d" /opt/fstab_Mrpan
当需要执行多个指令时可以使用 –e –f 或者分隔符分号;还可以使用分行,但是最好使用-f 文件来执行,这样的话便于修改,不容易出错。
例:删除包含example的行,替换所有的0为1
(1)# sed -e"/example/d" -e "s/0/1/g" /opt/fstab_Mrpan
(2)# sed"/example/d;s/0/1/g" /opt/fstab_Mrpan
好了,大家可以自己操作下看看有什么变化:如下图
到这里,大家已经了解了sed是能做什么了,后期我会拆分开,一点点来讲解,先学会走才能学会跑啊。
文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。
原文链接:zmedu.blog.csdn.net/article/details/103259394
- 点赞
- 收藏
- 关注作者
评论(0)