awk是一門編程語言,被普遍適用於linux系統,主要用於簡單腳本分析統計
今天咱們就小試牛刀,實操awk
awk編程是以行爲單位處理文件,語法是'pattern { action }' 即:'模式 {動做}' 記住是單引號 雙引號要轉義 linux
前提:系統已經安裝awk,而且存在一個demo.txt文件以便咱們實踐,文件內容以下:
user1 10 男
user2 20 女
user3 18 女
user4 28 男
user5 90 男git
1、入門使用github
輸出demo文件內容: awk '{print $0}' demo.txt user1 10 男 user2 20 女 user3 18 女 user4 28 男 user5 90 男 1)全部的pattern action 都在單引號內 2)這裏的{print $0} 爲action pattern爲空 3)awk會默認遍歷每行內容進行匹配執行。$0爲awk內置變量表明這行的全部內容。$1代碼第一列 $2表明第二列依次類推 4)awk默認會以空格和製表符爲分隔符來拆分每行內容。能夠用參數-F執行分隔符,如-F#表明用#分割這行內容 5)也能夠用linux管道方式如:cat demo.txt | awk '{print $0}' 6)awk內置不少經常使用變量,如NF(Number of Fileds),NR(Number of Records)等
2、pattern說明編程
輸出男生信息 awk '/男/ {print $0}' demo.txt user1 10 男 user4 28 男 user5 90 男 1)這裏的 /男/ 就是pattern 能夠使用正則匹配 //是開始結束符. 輸出年齡大於20歲的信息 awk '$2>20 {print $0}' demo.txt user4 28 男 user5 90 男 1)模式也能夠用判斷符號表示,如> < >= <= !=等等 輸出後再首行打印表頭 name age sex awk 'BEGIN{print "name","age","sex"} {print $0}' demo.txt name age sex user1 10 男 user2 20 女 user3 18 女 user4 28 男 user5 90 男 1)awk默認有BEGIN和END兩個模式符號,表明全部命令開始和結束執行 2)此處print逗號至關於分隔符空格
3、action說明編程語言
美化打印 1)awk支持printf格式化打印 awk '{printf("%s age is %d\n",$1,$2)}' demo.txt user1 age is 10 user2 age is 20 user3 age is 18 user4 age is 28 user5 age is 90 支持編程語法if else while等 awk '{ if ($3 == "男") printf("%s is a boy\n", $1) else printf("%s is a girl\n", $1) }' demo.txt
4、 附加說明code
awk是一門編程語言,支持的內容遠遠不及此,更多語法請下載手冊參考: https://github.com/colasjun/awk