——————————
课外练习
只处理用户ID为奇数的行,并打印用户名和ID号
[root@localhost ~]# awk -F: '{if($3%2!=0) {print $1,$3}}' /etc/passwd
显示系统的普通用户,并打印用户及ID
[root@localhost ~]# awk -F: '{if($3>=500) {print $1,$3}}' /etc/passwd
显示系统用户是“/bin/bash"的用户,并打印用户名
[root@localhost ~]# awk -F: '/\/bin\/bash$/{print $1}' /etc/passwd
统计普通用户的个数
[root@localhost ~]# awk -F: -v i=0 '{if($3>=500) {i++}}END{print i}' /etc/passwd
统计文本的总行数
[root@localhost ~]# awk -v i=0 '{i++}END{print i}' /etc/passwd
利用awk显示文件名
[root@localhost ~]# awk 'END{print FILENAME}' /etc/passwd
格式化输出统计数据
[root@localhost ~]# awk -F: '{printf "UID: %-5s NAME: %3s\n",$3,$1}' /etc/passwd
只显示ID为1000的用户的相关信息
[root@localhost ~]# awk -F: '{if($3==1000) {print $0}}' /etc/passwd
查找“root”关键字的行
[root@localhost ~]# awk '/root/{print $0}' /etc/passwd
利用awk模拟tail -1 的效果
[root@localhost ~]# awk 'END{print $0}' /etc/passwd
打印一个表头,并且打印用户名和ID
[root@localhost ~]# awk -F: 'BEGIN{printf "USERNAME UID\n------------------\n"}{printf "%-10s %5s\n",$1,$3}' /etc/passwd
打印一个表头和表尾,并打印用户名,ID,及shell
[root@localhost ~]# awk -F: 'BEGIN{printf "USERNAME UID SHELL\n"}{printf "%-13s %5s %-s\n",$1,$3,$7}END{printf "USERNAME UID SHELL\n"}' /etc/passwd
对文本中的字段进行字符个数统计
[root@localhost ~]# awk '{for(i=1;i<=NF;i++) {count[$i]++}}END{for(k in count) {print k,count[k]}}' /etc/fstab
打印字符个数大于等于8的字段
[root@localhost ~]# awk '{if(NF>8) {print $0}}' /etc/fstab
统计系统中shell的类型,并打印shell引用的次数
[root@localhost ~]# awk -F: '{count[$7]++}END{for(i in count) {print i,count[i]}}' /etc/passwd
统计fstab文件中,各文件系统被引用的次数
[root@localhost ~]# awk '/^[^#]/{filesystem[$3]++}END{for(i in filesystem) {print i,filesystem[i]}}' /etc/fstab
统计系统中各TCP连接状态的数量
[root@localhost ~]# netstat -tan | awk '/^tcp/{split($5,ip,":");if(ip[1]=="")next;count[ip[1]]++}END{for(i in count) {print i,count[i]}}'
统计web站点的用户访问次数
[root@localhost ~]# awk '/^[^#]/{filesystem[$3]++}END{for(i in filesystem) {print i,filesystem[i]}}' /etc/fstab
统计正与系统建立连接的IP地址(ESTABLISHED),并统计建立连接的连接数量
[root@localhost ~]# ss -tan | awk '/^ESTAB/{split($5,ip,":");state[ip[1]]++}END{for(i in state) {print i,state[i]}}'
将文本的重复行去掉
[root@localhost ~]# awk '!a[$0]++' test.txt
原创文章,作者:M20-1--孔祥文,如若转载,请注明出处:http://www.178linux.com/49081
评论列表(1条)
图画的不错,赞一个,awk是一个很方便的文本格式化工具,这也是以后面试题必会遇到的面试题,希望下来多加练习,熟练掌握,