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

sed的基本用法

时间:2018-03-13 21:38:39      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:sed

sed 可以替换指定的的字符
用法和grep差不多,

不加-n是匹配所有的行
-n 匹配root的行
[root@kylin sed]# sed -n ‘/root/‘p passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

同用也是支持.的
[root@kylin sed]# 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

-r 是脱意,
[root@kylin sed]# sed -nr ‘/o+t/‘p passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@kylin sed]# sed -n ‘/r*t/‘p passwd

匹配两次o
[root@kylin sed]# 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

打印2-5行
[root@kylin sed]# sed -n ‘2,5‘p passwd
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

打印20到最后的行
[root@kylin sed]# sed -n ‘20,$‘p passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
sam:x:1000:1000::/home/sam:/bin/bash
kylin:x:1001:1001::/home/kylin:/bin/bash
miko:x:1002:1003::/home/miko:/bin/bash
candy:x:1003:1004::/home/candy:/bin/bash

全部打印出来
[root@kylin sed]# sed -n ‘1,$‘p passwd

-e 多条件匹配
[root@kylin sed]# sed -e ‘1‘p -e ‘/kylin/‘p -n passwd
root:x:0:0:root:/root:/bin/bash
kylin:x:1001:1001::/home/kylin:/bin/bash

-I 不区分大小写,I需要放在p的前面
[root@kylin sed]# sed -n ‘/kylin/‘Ip passwd
Kylin
kylin:x:1001:1001::/home/kylin:/bin/bash

删除1-20行,这样是不写入文件的,
[root@kylin sed]# sed ‘1,20‘d passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
sam:x:1000:1000::/home/sam:/bin/bash
kylin:x:1001:1001::/home/kylin:/bin/bash
miko:x:1002:1003::/home/miko:/bin/bash
candy:x:1003:1004::/home/candy:/bin/bash

-i 删除文件的时候是写入文件的
[root@kylin sed]# sed -i ‘1,20‘d passwd
[root@kylin sed]# cat passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
sam:x:1000:1000::/home/sam:/bin/bash
kylin:x:1001:1001::/home/kylin:/bin/bash
miko:x:1002:1003::/home/miko:/bin/bash
candy:x:1003:1004::/home/candy:/bin/bash

删除带candy的行
[root@kylin sed]# sed -i ‘/candy/‘d passwd
[root@kylin sed]# cat passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
kylin:x:1001:1001::/home/kylin:/bin/bash
miko:x:1002:1003::/home/miko:/bin/bash

替换 和vim里面的替换差不多
[root@kylin sed]# sed ‘1,10s/root/toor/g‘ passwd |head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
Kylin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

也是支持特殊符号的,需要加-r
[root@kylin sed]# sed -r ‘1,10s/ro+/r/g‘ passwd |head
rt:x:0:0:rt:/rt:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
Kylin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

把第一段和最后一段换一下位置,
([^:]+) 第一段是一个或多个非冒号
(.*) 贪婪匹配一直匹配到最后一个冒号
([^:]+) 非冒号的字符
\3:\2:\1 这个原来的位置应该是123,但是需要把第一部分和第三部分换位置就需要把3写在前面,把1写在后面

每一个小括号括起来的都是一段,一个整体
[root@kylin sed]# head passwd |sed -r ‘s/([^:]+):(.*):([^:]+)/\3:\2:\1/‘
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
Kylin
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail

如果需要替换的里面带有这种/符号的,可以用\来脱意一下,也可以换一种符号,用#、$这些都可以的,只要可以区分就可以了
[root@kylin sed]# sed ‘s#/root#sam#g‘ passwd |head
[root@kylin sed]# sed ‘s/\/root/sam/g‘ passwd |head
root:x:0:0:root:sam:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
Kylin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

可以替换所有的英文
[root@kylin sed]# sed ‘s/[a-zA-Z]//g‘ passwd |head
::0:0::/://
::1:1::/://
::2:2::/://

::3:4:://://
::4:7::///://
::5:0::/://
::6:0::/://
::7:0::/://
::8:12::///://

每行的前面加上#
[root@kylin sed]# sed ‘s/^/#/g‘ passwd |head
#root:x:0:0:root:/root:/bin/bash
#bin:x:1:1:bin:/bin:/sbin/nologin
#daemon:x:2:2:daemon:/sbin:/sbin/nologin
#Kylin
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
上面的也可以用.,.代表匹配所有需要加上-r脱意
[root@kylin sed]# sed -r ‘s/.*/sam:&/g‘ passwd |head
sam:root:x:0:0:root:/root:/bin/bash
sam:bin:x:1:1:bin:/bin:/sbin/nologin
sam:daemon:x:2:2:daemon:/sbin:/sbin/nologin
sam:Kylin
sam:adm:x:3:4:adm:/var/adm:/sbin/nologin
sam:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sam:sync:x:5:0:sync:/sbin:/bin/sync
sam:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sam:halt:x:7:0:halt:/sbin:/sbin/halt
sam:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

在Kylin行前面加上一个sam:
[root@kylin sed]# sed ‘s/^Kylin/sam:&/g‘ passwd |head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
sam:Kylin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

sed的基本用法

标签:sed

原文地址:http://blog.51cto.com/huazi1991/2086228

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