awk學習筆記 10 陣列

2021-09-20 19:56:26 字數 1057 閱讀 4806

awk中的陣列

awk中的陣列跟php中的很像,使用前都不需要宣告,都可以用字串做下標。

我們建立乙個reg.dat檔案來記錄使用者選修的課程:

mary o.s. arch. discrete steve d.s. algorithm arch. 

wang discrete graphics o.s. lisa graphics a.i. 

lily discrete algorithm 

現在要統計各課程被選的次數,親,怎麼辦?

之前的程式都是用命令列完成的,從這一篇開始,我們學習將程式寫在檔案中來呼叫。

呼叫的方式是:

awk -f awk程式檔案 資料檔案 

下面建立乙個course.awk檔案,在裡面編寫如下的程式:

end  

然後在命令列中呼叫:

awk -f course.awk reg.dat 

輸出結果:

discrete 3 

d.s. 1 

o.s. 2 

steve 1 

a.i. 1 

lisa 1 

graphics 2 

arch. 2 

algorithm 2 

解釋一下course.awk中的程式:

第一行是乙個for迴圈,nf是一行的字段數,number是乙個陣列,$i從第2列開始,直到一行最後一列,其實就是迴圈了一行的所有的課程,我們將課程名作為陣列的下標,一旦有重複的課程,就會將number[$i]加1。

第二行中的end表示的是在檔案處理結束後進行的處理。這一行也有乙個for迴圈,它是用於將number陣列格式化輸出,for(course in number)會逐個讀取number中的元素,讀取的下標即course,值為number[course]。printf完成下標與值的格式化輸出。

其實在之前的awk學習筆記(6)中介結不排序對資料去重的技巧時已經用到過陣列了,只是沒有系統的學習。

awk學習筆記

單詞計數 cat filename awk end 排序演算法 bin bash function f while n 1 do f 1 shift done wait 顯示特殊符 var i am a student echo var awk 結果為 am a i student echo var...

awk學習筆記

1 將第一列重複的元素去掉,只保留第乙個 root centos awk test cat sed u.txt haha 1 nihao 1 haha 3 hehe 4 heihei 5 heihei 6 1 haha 1 heihei root centos awk test awk f a 1 ...

AWK學習筆記

1.awk是三個 人名的縮寫,他們是 aho peter weinberg和 brain kernighan。awk是一種樣式掃瞄與處理工具。但其功能卻大大強於sed和grep。awk支援對記錄和字段的處理,其中對字段的處理是grep和sed不能實現 的,這也是awk優於二者的原因之一。2.與其它u...