Sed是一种流式编辑器,是针对文档的行来操作的。它是文本处理中常用的工具,能够完美的配合正则表达式使用。比起grep/egrep来,功能更加强大。
�sed命令的基本用法: sed [-nefri] ‘command’ filename
�常用选项:
-n :只有经过sed 特殊处理的那一行才会被列出来;
-e :可以多点编辑;
-r :sed 的动作支持的脱意;
�常用命令:
d :删除对应行;
p :打印。通常会与参数 sed -n协同使用;
s :替换。配合g表示全部替换。
1、查找
1)特殊字符匹配:
[root@server01test1]#sed-n'/r.t/'ppasswd operator:x:11:0:operator:/root:/sbin/nologin sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin [root@server01test1]#sed-n'/ro*t/'ppasswd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@server01test1]#sed-n'/ro*t/'Ippasswd##“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@server01test1]#sed-nr'/r+at/'ppasswd##“r”表示脱意 operator:x:11:0:operator:/root:/sbin/nologin sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin [root@server01test1]#sed-nr'/o{2}/'ppasswd 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@server01test1]#sed-nr'/root|login/'ppasswd 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-separatedSSH:/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@server01test1]#sed-n'3'ppasswd daemon:x:2:2:daemon:/sbin:/sbin/nologin [root@server01test1]#sed-n'3,5'ppasswd 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@server01test1]#sed-n'20,$'ppasswd postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin [root@server01test1]#sed-e'20,$'p-e'/lib/'p-npasswd##单个命令执行多个动作 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@server01test1]#sed-i'10,$'dpasswd##删除第10行到最后一行 [root@server01test1]#wc-lpasswd 9passwd [root@server01test1]#sed-i'/root/'dpasswd##删除带root关键词的行 [root@server01test1]#grep'root'passwd
3、替换
[root@server01test1]#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@server01test1]#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@server01test1]#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@server01test1]#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@server01test1]#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@server01test1]#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最简单的命令使用技巧。学习很容易,熟练很难,平时还是需要多加练习。
原文链接:https://www.f2er.com/centos/376915.html