sed的使用详解

举报
互联网老辛 发表于 2021/06/08 23:44:14 2021/06/08
【摘要】 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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。