——————————
課外練習
只處理用戶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.www58058.com/49081
圖畫的不錯,贊一個,awk是一個很方便的文本格式化工具,這也是以后面試題必會遇到的面試題,希望下來多加練習,熟練掌握,