AWK工作流程
1.只有action時候,awk工作流程是這樣的:讀入有'\n'換行符分割的一條記錄,然后將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,$1表示第一個域,$n表示第n個域腐螟。默認域分隔符是"空白鍵" 或 "[tab]鍵",所以$1表示登錄用戶,$3表示登錄用戶ip,以此類推。
2.當存在begin和end時候乐纸,awk工作流程是這樣的:先執(zhí)行BEGING衬廷,然后讀取文件,讀入有/n換行符分割的一條記錄汽绢,然后將記錄按指定的域分隔符劃分域泵督,填充域,$0則表示所有域,$1表示第一個域,$n表示第n個域,隨后開始執(zhí)行模式所對應的動作action庶喜。接著開始讀入第二條記錄······直到所有的記錄都讀完小腊,最后執(zhí)行END操作。
AWK命令格式
格式一: awk '{pattern + action}' {filenames}
格式二: awk [-F field-separator] 'commands' input-file(s)
AWK內(nèi)置變量
ARGC 命令行參數(shù)個數(shù)
ARGV 命令行參數(shù)排列
ENVIRON 支持隊列中系統(tǒng)環(huán)境變量的使用
FILENAME awk瀏覽的文件名
FNR 瀏覽文件的記錄數(shù)
FS 設置輸入域分隔符久窟,等價于命令行 -F選項
NF 瀏覽記錄的域的個數(shù)
NR 已讀的記錄數(shù)OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符
AWK使用實例
- cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'
- awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd