awk练习

1、获取根分区剩余大小

[root@localhost test]# df -Th / | awk 'NR==2 {print $5}'
16G

2、获取当前机器ip地址

[root@localhost test]# hostname -I
192.168.6.20 

3、统计出apache的access.log中访问量最多的5个IP

[root@localhost test]# awk '{ip[$1]++} END {for (a in ip) print a,ip[a]}' /var/log/httpd/access_log
192.168.6.20 7

4、打印/etc/passwd中UID大于500的用户名和uid

[root@localhost test]# awk -F: '$3>500 {print $1.$3}' /etc/passwd

5、/etc/passwd 中匹配包含root或net或ucp的任意行

[root@localhost test]# awk '/root|net|ucp/ {print $0}' /etc/passwd

6、处理以下文件内容,将域名取出并根据域名进行计数排序处理(百度搜狐面试题)
test.txt
http://www.baidu.com/index.html
http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html

[root@localhost chap10]# awk -F/ '{name[$3]++} END {for (i in name) print i,name[i]}' file | sort -k 2 -nr
www.baidu.com 3
post.baidu.com 2
mp3.baidu.com 1

7、请打印出/etc/passwd 第一个域,并且在第一个域所有的内容前面加上“用户帐号:”

[root@localhost chap10]# awk -F: 'NR<=10 {print "zhanghao: "$1}' /etc/passwd
zhanghao: root
zhanghao: bin
zhanghao: daemon
zhanghao: adm
zhanghao: lp
zhanghao: sync
zhanghao: shutdown
zhanghao: halt
zhanghao: mail
zhanghao: operator

8、请打印出/etc/passwd 第三个域和第四个域

[root@localhost chap10]# awk -F: '{print $3,$4}' /etc/passwd

9、请打印第一域,并且打印头部信息为:这个是系统用户,打印尾部信息为:“================”

[root@localhost chap10]# awk 'BEGIN {print"zhegeshi xitongzhanghao"} {print} END {print "========end=========="}'  /etc/passwd

10、请打印出第一域匹配daemon的信息.

[root@localhost chap10]# awk -F: '$1~/daemon/ {print $0}' /etc/passwd

11、请将/etc/passwd 中的root替换成gongda,记住是临时替换输出屏幕看到效果即可.

[root@localhost chap10]# sed -n 's/root/gongda/p' /etc/passwd

12、请匹配passwd最后一段域bash结尾的信息,有多少条

[root@localhost chap10]# awk -F: '$NF~/bash$/ {sum++} END {print sum}' /etc/passwd
24

13、请同时匹配passwd文件中,带mail或bash的关键字的信息

[root@localhost chap10]# awk '/mail|bash/ {print}' /etc/passwd

你可能感兴趣的:(linux)