1.11.8 sed练习题目
1.用sed取出ifconfig中的ipv4地址
[root@CentOS7 ~]# ifconfig|sed -nr '2s/^(.*inet )(.*)( netmask .*)$/\2/p'
192.168.110.131
2.显示/etc/passwd的最后一行
[root@CentOS7 ~]# awk 'END{print$0}' /etc/passwd
user6:x:4063:4067::/home/user6:/bin/bash
[root@CentOS7 ~]# tail -n1 /etc/passwd
user6:x:4063:4067::/home/user6:/bin/bash
[root@CentOS7 ~]# sed -n '$p' /etc/passwd
user6:x:4063:4067::/home/user6:/bin/bash
3.显示/etc/passwd的第一行到第三行
[root@CentOS7 ~]# awk '{if (NR>=1 && NR<=3) print $0}' /etc/passwd
##print 直接后跟变量名,不用加$,$0可以省略,if和()之间有无空格都可,()和print之间也一样
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@CentOS7 ~]#cat /etc/passwd | awk '{if(NR>=1 && NR<=3)print}'
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@CentOS7 ~]# head -n3 /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
[root@CentOS7 ~]# 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
4.显示/etc/fstab 中以U开头的行
[root@CentOS7 ~]# cat /etc/fstab |grep "^U"
UUID=50ad6c96-3d5a-4840-9f52-11f045c46a1d / xfs defaults 0 0
UUID=755562ec-35e1-4ab9-bd08-8b0a691bde48 /boot xfs defaults 0 0
UUID=48c79d0b-623e-4a61-8b5e-da5b2f0050b6 /data xfs defaults 0 0
UUID=7067af7e-e829-49ba-b713-55296c046e27 swap swap defaults 0 0
UUID=d045c3b8-68ba-4479-9b98-ceec0c8aa526 /home xfs defaults 0 0
[root@CentOS7 ~]# cat /etc/fstab |sed -nr '/^U/p'
UUID=50ad6c96-3d5a-4840-9f52-11f045c46a1d / xfs defaults 0 0
UUID=755562ec-35e1-4ab9-bd08-8b0a691bde48 /boot xfs defaults 0 0
UUID=48c79d0b-623e-4a61-8b5e-da5b2f0050b6 /data xfs defaults 0 0
UUID=7067af7e-e829-49ba-b713-55296c046e27 swap swap defaults 0 0
UUID=d045c3b8-68ba-4479-9b98-ceec0c8aa526 /home xfs defaults 0 0
[root@CentOS7 ~]# cat /etc/fstab |awk '/^U/{print}'
UUID=50ad6c96-3d5a-4840-9f52-11f045c46a1d / xfs defaults 0 0
UUID=755562ec-35e1-4ab9-bd08-8b0a691bde48 /boot xfs defaults 0 0
UUID=48c79d0b-623e-4a61-8b5e-da5b2f0050b6 /data xfs defaults 0 0
UUID=7067af7e-e829-49ba-b713-55296c046e27 swap swap defaults 0 0
UUID=d045c3b8-68ba-4479-9b98-ceec0c8aa526 /home xfs defaults 0 0
5.用sed的regex只显示ifconfig的第二行
[root@CentOS7 ~]# ifconfig |sed -n '2p'
inet 192.168.110.131 netmask 255.255.255.0 broadcast 192.168.110.255
[root@CentOS7 ~]# ifconfig |head -n2 |tail -n1
inet 192.168.110.131 netmask 255.255.255.0 broadcast 192.168.110.255
[root@CentOS7 ~]# ifconfig |awk '{if (NR==2); print$0}' ##如果NR==2,后面什么都没跟,最后打印所有的行了,这里分号表示if语句结束了
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.110.131 netmask 255.255.255.0 broadcast 192.168.110.255
inet6 fe80::6771:3c83:1113:d701 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:8e:b3:16 txqueuelen 1000 (Ethernet)
RX packets 137 bytes 16052 (15.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 59 bytes 9024 (8.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.20.129.161 netmask 255.255.0.0 broadcast 172.20.255.255
inet6 fe80::4318:d843:7a34:9275 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:8e:b3:20 txqueuelen 1000 (Ethernet)
RX packets 22409 bytes 2432535 (2.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5029 bytes 633655 (618.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 50 bytes 5084 (4.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 50 bytes 5084 (4.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@CentOS7 ~]# ifconfig |awk '{if (NR==2) print$0}'
inet 192.168.110.131 netmask 255.255.255.0 broadcast 192.168.110.255
6.只显示磁盘利用率
[root@CentOS7 ~]# df |awk '/\/dev\/sd/{print $1,$5}' ##$1和$5之间用,分隔,就表示空格
/dev/sda2 10%
/dev/sda6 1%
/dev/sda3 1%
/dev/sda1 16%
[root@CentOS7 ~]# df |awk '/\/dev\/sd/{print $1" "$5}' ##$1和$5之间加什么,用“内容”
/dev/sda2 10%
/dev/sda6 1%
/dev/sda3 1%
/dev/sda1 16%
[root@CentOS7 ~]# df |awk -F "[ ]+" '/\/dev\/sd/{print $1"="$5}'
/dev/sda2=10%
/dev/sda6=1%
/dev/sda3=1%
/dev/sda1=16%
[root@CentOS7 ~]# df |awk -F "[[:space:]]+" '/\/dev\/sd/{print $5}'
10%
1%
1%
16%
[root@CentOS7 ~]# df |awk -F "[ ]+" '/\/dev\/sd/{print $5}'
10%
1%
1%
16%
7.显示从第一行往后的三行/etc/passwd
[root@CentOS7 ~]# 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
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@CentOS7 ~]# cat /etc/passwd |awk '{if(NR>=1 && NR<=4) print}'
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
8.显示/etc/passwd从s开头的行到f开头之间的行
[root@CentOS7 ~]# cat /etc/passwd |sed -n '/^s/,/^f/p'
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
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sssd:x:998:996:User for sssd:/:/sbin/nologin
libstoragemgmt:x:997:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
colord:x:996:993:User for colord:/var/lib/colord:/sbin/nologin
gluster:x:995:992:GlusterFS daemons:/var/run/gluster:/sbin/nologin
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAud