一、簡介
二、語法
三、action:執行動作
四、選項
五、內置變量NF
一、簡介
awk常用於分析數據生成報表,它將文件逐行讀入,使用分隔符將數據分段後,進行處理。awk其名稱得自於它的創始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首個字母,Linux中的awk通常說的是gawk。
二、語法
awk [options] ‘/pattern/{action}’/path/to/file
地址定界/pattern/:
pattern1,pattren2:指定的行
/pattern/:可以僅僅是模式匹配的行
expression:可以表達式
[root@TESTHOST ~]# awk -F: '$3>500{print $1,$3,$7}' /etc/passwd #分段後,用表達式比較第3段uid的值, student 501 /bin/bash
BEGIN:在處理任意行之前進行的操作
[root@TESTHOST ~]# awk -F: 'BEGIN{print "username uid shell"}$3>500{print $1,$3,$7}' /etc/passwd #此處意爲在處理數據前,在行首先打印標題內容 username uid shell student 501 /bin/bash You have new mail in /var/spool/mail/root
END:行數據處理完後進行收尾操作
[root@TESTHOST ~]# awk -F: '$3>500{print $1,$3,$7}END{print "username uid shell"}' /etc/passwd #此處意爲行數據處理完後,在末行打印標題內容 student 501 /bin/bash username uid shell
三、action:執行動作
print:打印內容到屏幕
printf:按照格式打印內容到屏幕
四、選項
-F:指定分隔符
[root@TESTHOST ~]# awk -F: '/bash/{print $1,$3,$7}' /etc/passwd #匹配內容中有“bash”的行,以分隔符“:”分段,打印第1、第3、第7段內容 root 0 /bin/bash mockbuild 500 /bin/bash student 501 /bin/bash
五、內置變量NF
NF:Number of Filed,段數
$NF:最後一列
[root@TESTHOST init.d]# echo $PWD #此路徑由3個分號分隔成4段內容 /etc/rc.d/init.d [root@TESTHOST init.d]# echo $PWD | awk -F/ '{print $1}' #從結果看出第一段爲分號前內容 [root@TESTHOST init.d]# echo $PWD | awk -F/ '{print $NF}' #$NF表示最後一段 init.d [root@TESTHOST init.d]# echo $PWD | awk -F/ '{print NF}' #NF表示分隔的段數 4 [root@TESTHOST init.d]#