sed 练习--/etc/passwd

             练习(sed)1. 取出passwd文件中包含root的行?              
2.  取出passwd文件中以root开头的行?                                      
3.  取出passwd文件中以root或sshd的行?                                    
4.  取出passwd文件中包含sync和mail的行?                                    
5.  取出passwd文件中前三行?                           
6.  取出passwd文件中第一行和第三行?                                    
7.  取出passwd文件中第十行?                                    
8.  删除passwd包含root字符串的行?                                    
9.  删除passwd包含root和lp的行?                                   
10. 删除passwd中adm到ganes的行?                                  
11.删除passwd中第二行?        
12.删除passwd中第二行到第十行?        
13.删除passwd中第三行到第六行?        
14.将oldboy追加到passwd文件第五行的后面?        
15.将oldboy追加到passwd文件末尾?        
16.将oldboy,oldgirl追加到passwd文件第十行的后面?        
17. 将oldboy追加到passwd文件中包含sshd的下一行?         
18.在passwd文件第一行的前面插入oldboy?        
19.在passwd文件最后一行的前面插入oldboy?        
20.在passwd文件第二行的前面插入oldboy,oldgirl?        
21.在passwd文件中包含root行插入oldboy?        
22.将passwd文件中的root替换为admic?        
23.将passwd文件中第十行的root替换为admic?        
24.将passwd文件中第三行到第十五行的root替换为admic?        
25.将passwd文件中的root替换为admic忽略大小写?        
26.将passwd文件中第十行以后的root替换为admic?        
27.将passwd文件中以root开头的行,将bin替换为oldboy?        
28.将passwd文件中每个root后面加上一个abc?        
29.将passwd文件中每一行前面加上注释?        
30.将passwd文件中每一行注释删掉?        
31.将passwd文件中所有的#删除掉?        
32.将passwd文件中root字符串全部删除?        
33.将passwd文件中删除空行?        
34.将passwd文件中的第一列与第七列的位置进行调换?        
35.将passwd文件打印行号        
36.将passwd文件排除空行和注释行  #号开头的 ?

解答:

1. 取出passwd文件中包含root的行? 

[root@ecs-76840553 ~]# sed -n '/root/p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/bin/false
[root@ecs-76840553 ~]# 

2. 取出passwd文件中以root开头的行?

[root@ecs-76840553 ~]# sed -n '/^root/p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@ecs-76840553 ~]# 

3. 取出passwd文件中以root或sshd的行?

[root@ecs-76840553 ~]# sed -ne '/root/p' -e '/sshd/p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/bin/false
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@ecs-76840553 ~]# 

 4. 取出passwd文件中包含sync和mail的行?

[root@ecs-76840553 ~]# cat /etc/passwd | grep mail
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@ecs-76840553 ~]# cat /etc/passwd | grep sync
sync:x:5:0:sync:/sbin:/bin/false
[root@ecs-76840553 ~]# cat /etc/passwd | sed -ne '/sync/p' -e  '/mail/p' 
sync:x:5:0:sync:/sbin:/bin/false
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@ecs-76840553 ~]# 

5.取出passwd文件中前三行?

[root@ecs-76840553 ~]# cat /etc/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:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
sync:x:5:0:sync:/sbin:/bin/false
shutdown:x:6:0:shutdown:/sbin:/bin/false
halt:x:7:0:halt:/sbin:/bin/false
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/bin/false
games:x:12:100:games:/usr/games:/bin/false
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/bin/false
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
xiaoming:x:1000:1000::/home/xiaoming:/bin/bash
[root@ecs-76840553 ~]# cat /etc/passwd | sed -n '1,3p'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@ecs-76840553 ~]# 

 6.取出passwd文件中第一行和第三行?

[root@ecs-76840553 sed]# cat /etc/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:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
sync:x:5:0:sync:/sbin:/bin/false
shutdown:x:6:0:shutdown:/sbin:/bin/false
halt:x:7:0:halt:/sbin:/bin/false
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/bin/false
games:x:12:100:games:/usr/games:/bin/false
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/bin/false
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
xiaoming:x:1000:1000::/home/xiaoming:/bin/bash
[root@ecs-76840553 sed]# cat /etc/passwd | sed -n '1p;3p'
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@ecs-76840553 sed]# 
7.  取出passwd文件中第十行?

[root@ecs-76840553 sed]# cat /etc/passwd | sed -n '10p'
operator:x:11:0:operator:/root:/bin/false

 8.删除passwd包含root字符串的行? 

[root@VM-4-13-centos sed]# cat /etc/passwd | sed '/root/d'

9.删除passwd包含root和lp的行?

[root@VM-4-13-centos sed]# cat /etc/passwd | sed  '/root/d;/lp/d'

10.删除passwd中adm到shutdown的行?

[root@VM-4-13-centos sed]# cat /etc/passwd | sed  -n '/adm/,/shutdown/p'
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

11.删除passwd中第二行?

[root@VM-4-13-centos sed]# cat /etc/passwd | sed  '2d'

 12.删除passwd中第二行到第十行?

[root@VM-4-13-centos ~]# cat /etc/passwd | sed '2,10d'
13.删除passwd中第三行到第六行?
[root@VM-4-13-centos ~]# cat /etc/passwd | sed '3,6d'
14.将oldboy追加到passwd文件第五行的后面? 
[root@VM-4-13-centos ~]# cat /etc/passwd | sed  '5aoldboy'
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
oldboy
15.将oldboy追加到passwd文件末尾? 
 cat /etc/passwd | sed  '$aoldboy'

 16.将oldboy,oldgirl追加到passwd文件第十行的后面?

[root@VM-4-13-centos ~]# cat /etc/passwd | sed '10aoldboy,oldgirl'
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
oldboy,oldgirl
games:x:12:100:games:/usr/games:/sbin/nologin
17. 将oldboy追加到passwd文件中包含sshd的下一行?  
cat /etc/passwd | sed '/sshd/aoldboy'
18.在passwd文件第一行的前面插入oldboy?    
cat /etc/passwd | sed '1ioidboy'
19.在passwd文件最后一行的前面插入oldboy? 
cat /etc/passwd | sed '$ioldboy'
20.在passwd文件第二行的前面插入oldboy,oldgirl? 
cat /etc/passwd | sed '2ioldboy,oldgirl'

 21 在passwd文件中包含root行插入oldboy? 

cat /etc/passwd | sed '/root/ioldboy'

oldboy
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
oldboy
operator:x:11:0:operator:/root:/sbin/nologin
22.将passwd文件中的root替换为admic? 

cat /etc/passwd| sed 's/root/admic/'

admic:x:0:0:admic:/admic:/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:/admic:/sbin/nologin

 23.将passwd文件中第十行的root替换为admic? 

cat /etc/passwd | sed '10s/root/admic/'
24.将passwd文件中第三行到第十五行的root替换为admic?
 cat /etc/passwd | sed '3,15s/root/admic/'
25.将passwd文件中的root替换为admic忽略大小写?   
cat /etc/passwd | sed 's/root/admic/ig'

 26.将passwd文件中第十行以后的root替换为admic?

cat /etc/passwd | sed '10,$s/root/admic/'
27.将passwd文件中以root开头的行,将bin替换为oldboy?
 cat /etc/passwd |sed '/^root/s/bin/oldboy/g'
28.将passwd文件中每个root后面加上一个abc? 
cat /etc/passwd |sed 's/root/rootabc/g'

 29.将passwd文件中每一行前面加上注释?    

cat /etc/passwd | sed 'i"注释"'
30.将passwd文件中每一行注释删掉?
cat /etc/passwd | sed '/"注释"/d'
31.将passwd文件中所有的#删除掉?   
sed -i 's/#//g' /etc/passwd

 32.将passwd文件中root字符串全部删除?

sed -i 's/root//g' /etc/passwd
33.将passwd文件中删除空行?
[root@VM-4-13-centos sed]# cat 1.txt 
1

2
  
33
[root@VM-4-13-centos sed]# cat 1.txt |sed '/^$/d'
1
2
  
33
[root@VM-4-13-centos sed]# cat 1.txt |sed '/^$/d' |sed '/^ /d'
1
2
33
34.将passwd文件中的第一列与第七列的位置进行调换? 
35.将passwd文件打印行号 
 cat /etc/passwd | sed '='
36.将passwd文件排除空行和注释行  #号开头的 ?
[root@VM-4-13-centos sed]# cat 2.txt 
#dgrgrrgrq
dsgrwgergrgre
#dfgrrre1233445

12345
#dsgvgergr
#dgrgrrgrq
dsgrwgergrgre
#dfgrrre1233445

12345
#dsgvgergr
#dgrgrrgrq
dsgrwgergrgre
#dfgrrre1233445

12345
#dsgvgergr
#dgrgrrgrq
[root@VM-4-13-centos sed]# cat 2.txt | sed '/^$/d;/#/d'
dsgrwgergrgre
12345
dsgrwgergrgre
12345
dsgrwgergrgre
12345

 



posted @ 2022-09-08 09:42  家乐福的搬砖日常  阅读(153)  评论(0编辑  收藏  举报