码迷,mamicode.com
首页 > 其他好文 > 详细

[CentOS 7系列]sed

时间:2017-07-05 10:08:49      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:sed

   Sed是一种流式编辑器,是针对文档的行来操作的。它是文本处理中常用的工具,能够完美的配合正则表达式使用。比起grep/egrep来,功能更加强大。


▌sed命令的基本用法:  sed [-nefri] ‘command’ filename        


▎常用选项:

-n :只有经过sed 特殊处理的那一行才会被列出来;

-e :可以多点编辑;

-r :sed 的动作支持的脱意;

-i :直接修改读取的文件内容,而不是输出到终端。


▎常用命令:

 d :删除对应行;

 p :打印。通常会与参数 sed -n协同使用;

 s :替换。配合g表示全部替换。




1、查找

1)特殊字符匹配:

[root@server01 test1]# sed -n ‘/r.t/‘p passwd
operator:x:11:0:operator:/root:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@server01 test1]# sed -n ‘/ro*t/‘p passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@server01 test1]# sed -n ‘/ro*t/‘Ip passwd    ##“I”忽略大小写
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
Root:x:0:0:Root:/Root:/bin/bash
[root@server01 test1]# sed -nr ‘/r+at/‘p passwd    ##“r”表示脱意
operator:x:11:0:operator:/root:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@server01 test1]# sed -nr ‘/o{2}/‘p passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@server01 test1]# sed -nr ‘/root|login/‘p passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
......
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin


2)打印指定行:

[root@server01 test1]# sed -n ‘3‘p passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@server01 test1]# sed -n ‘3,5‘p passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@server01 test1]# sed -n ‘20,$‘p passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
[root@server01 test1]# sed -e ‘20,$‘p -e ‘/lib/‘p -n passwd ##单个命令执行多个动作
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin        #同样的行,第一次#
chrony:x:997:995::/var/lib/chrony:/sbin/nologin        #同样的行,第二次#


2、删除

[root@server01 test1]# sed -i ‘10,$‘d passwd     ##删除第10行到最后一行
[root@server01 test1]# wc -l passwd
9 passwd
[root@server01 test1]# sed -i ‘/root/‘d passwd   ##删除带root关键词的行
[root@server01 test1]# grep ‘root‘ passwd


3、替换

[root@server01 test1]# sed ‘1,3s/root/ROOT/‘ passwd
ROOT:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@server01 test1]# sed ‘1,3s/root/ROOT/g‘ passwd    ##“g”表示全部匹配项
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
......
[root@server01 test1]# sed ‘s/\(root\)\(.*\)\(bash\)/\3\2\1/‘ passwd 
bash:x:0:0:root:/root:/bin/root                             ##调换两个字符串的位置
bin:x:1:1:bin:/bin:/sbin/nologin
......
[root@server01 test1]# sed -r ‘s#([^:]+):(.*):([^:]+)#\3\2\1#g‘ passwd
/bin/bashx:0:0:root:/rootroot
/sbin/nologinx:1:1:bin:/binbin
/sbin/nologinx:2:2:daemon:/sbindaemon
......
[root@server01 test1]# sed ‘s/[0-9]//g‘ passwd    ##删除所有数字
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
......
[root@server01 test1]# sed -r ‘s/(^root)/#&/g‘ passwd  ##所有root开头的行注释掉
#root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
......


以上是sed最简单的命令使用技巧。学习很容易,熟练很难,平时还是需要多加练习。


本文出自 “乱码时代” 博客,请务必保留此出处http://juispan.blog.51cto.com/943137/1944588

[CentOS 7系列]sed

标签:sed

原文地址:http://juispan.blog.51cto.com/943137/1944588

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!