[root@localhost ~]# mkdir sed
[root@localhost ~]# cd sed
[root@localhost sed]# cp ../grep/passwd test.txt
[root@localhost sed]# pwd
/root/sed
[root@localhost sed]# ls
test.txt
[root@localhost sed]#
[root@localhost sed]# sed '/root/'p test.txt //输出文件所有内容, 并匹配出root的行连续打印两次
root:x:0:0:root:/root:/bin/bash
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
等等等,只截取了一部分
在添加 -n参数后,则只会匹配出需要的两行
[root@localhost sed]# sed -n '/root/'p test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost sed]#
[root@localhost sed]# sed -n '/r.o/'p test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost sed]# sed -n '/r*o/'p test.txt
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@localhost sed]# sed -nr '/r+o/'p test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost sed]#
[root@hf-01 sed]# sed -nr '/o{2}/'p test.txt
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@hf-01 sed]#
[root@hf-01 sed]# sed -n '/^h/'p test.txt //匹配以h字符开头的行
halt:x:7:0:halt:/r.o:/sbin/halt
hhhhhao
[root@hf-01 sed]# sed -nr '/root|nologin/'p test.txt
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
等等等,只截取了一部分
[root@hf-01 sed]# sed -n '2'p test.txt //打印指定的第二行
bin:x:1:1:bin:/bin:/sbin/nologin
[root@hf-01 sed]#
[root@hf-01 sed]# sed -n '2,5'p test.txt //打印文件中的2到5行
bin:x:1:1:bin:/bin:/sbin/nologin
adas:124:bdsf:rto:pass
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dfdf:rggo:124
[root@hf-01 sed]#
[root@hf-01 sed]# sed -n '24,$'p test.txt
asfhan
dannnnnn
hhhhhao
[root@hf-01 sed]#
[root@hf-01 sed]# sed -n '1,$'p test.txt //打印从第一行到结束的行
[root@localhost sed]# sed -n '/in$/'p test.txt //匹配以in结尾的行
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
等等等,只截取了一部分
[root@hf-01 sed]# sed -e '1'p -e '/bus/'p -n test.txt //表示在一个表达式中,先文件中匹配第一段字符,然后在匹配bus的字符段
root:x:0:0:root:/root:/bin/bash
dbus:x:81:81:System message bus:/:/sbin/nologin
在两个-e的表达式中是重合的,则会打印两次
[root@hf-01 sed]# sed -e '1'p -e '/root/'p -n test.txt
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@hf-01 sed]#
[root@hf-01 sed]# sed -e '1'p -e '/root/'p -e '/root/'p -n test.txt
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@hf-01 sed]#
[root@hf-01 sed]# sed '1,20'd test.txt
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
asfhan
dannnnnn
hhhhhao
[root@hf-01 sed]# wc -l test.txt
26 test.txt
[root@hf-01 sed]# cp test.txt test.txt.bak
[root@hf-01 sed]# sed -i '1,20'd test.txt
[root@hf-01 sed]# wc -l test.txt
6 test.txt
[root@hf-01 sed]#
[root@hf-01 sed]# sed -i '/sshd/'d test.txt //会直接修改文件内容,删除sshd这一行
[root@hf-01 sed]# cat test.txt
mysql:x:1000:1000::/home/mysql:/bin/bash
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
asfhan
dannnnnn
hhhhhao
[root@hf-01 sed]#
[root@hf-01 sed]# sed '1,5s/nologin/lala/g' test.txt //把文件中1到5行中的nologin替换成lala
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/lala
adas:124:bdsf:rto:pass
daemon:x:2:2:daemon:/sbin:/sbin/lala
dfdf:rggo:124
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
等等等,只截取了一部分
[root@hf-01 sed]#
[root@hf-01 sed]# sed -r '1,5s/ro+/r/g' test.txt //将文件的1到5行中的ro+替换成r
rt:x:0:0:rt:/rt:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
adas:124:bdsf:rto:pass
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dfdf:rggo:124
等等等,只截取了一部分
[root@localhost sed]# head test.txt
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
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
operator:x:11:0:operator:/root:/sbin/nologin
对比
[root@localhost sed]# head test.txt |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
/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
/sbin/nologin:x:11:0:operator:/root:operator
[root@localhost sed]#
[root@localhost sed]# head test.txt |sed 's/\/root/123/g'
root:x:0:0:root:123:/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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost sed]#
[root@localhost sed]# head -n5 test.txt |sed 's/\/sbin\/nologin/123/g'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:123
daemon:x:2:2:daemon:/sbin:123
adm:x:3:4:adm:/var/adm:123
lp:x:4:7:lp:/var/spool/lpd:123
[root@localhost sed]#
[root@localhost sed]# head - n5 test.txt |sed 's@/sbin/nologin@123@g'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:123
daemon:x:2:2:daemon:/sbin:123
adm:x:3:4:adm:/var/adm:123
lp:x:4:7:lp:/var/spool/lpd:123
[root@localhost sed]# head test.txt |sed 's#/sbin/nologin#123#g'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:123
daemon:x:2:2:daemon:/sbin:123
adm:x:3:4:adm:/var/adm:123
lp:x:4:7:lp:/var/spool/lpd:123
[root@localhost sed]#
[root@localhost sed]# head -n5 test.txt |sed 's/[a-zA-Z]//g' //删除前5行中所有的英文字母
::0:0::/://
::1:1::/://
::2:2::/://
::3:4:://://
::4:7::///://
[root@localhost sed]#
[root@localhost sed]# head -n5 test.txt |sed -r 's/(.*)/aaa:&/' //在前5行中,所有行前面添加aaa字符
aaa:root:x:0:0:root:/root:/bin/bash
aaa:bin:x:1:1:bin:/bin:/sbin/nologin
aaa:daemon:x:2:2:daemon:/sbin:/sbin/nologin
aaa:adm:x:3:4:adm:/var/adm:/sbin/nologin
aaa:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost sed]#