用這個列子說好了
如果NF代表字段 那最后應該是7 才對啊 還有最后怎么都是1呢?
END前面的是查看並發吧 后面是查看 tcp連接數 是這樣嗎?
如果NF代表字段 那最后應該是7 才對啊 還有最后怎么都是1呢?
END前面的是查看並發吧 后面是查看 tcp連接數 是這樣嗎?
awk下標采用字符串來表示
可能你在其它語言見過int a[10];這代表有10個元素的數組,下標為0,1,2,,,9
而awk的下標是字符串,說白了,像極了hash,比如a["hello"] = 'world',只不過我們稱之為數組
同時,你要明白NF是字段數,number of field .比如某一行文件為 hello world,那么NF為2
但是加上$,即$NF就代表第二個字段的內容,那么$NF2 為world
現在回到正文,++S[$NF],就有點類似於,用字典統計文件
比如hello world hello
那么++S【$NF】的結果就是S【“hello”】 = 2,S["world"] = 1
/^tcp/ 表示對每一行進行正則匹配,因為我們netstat會產生udp的行,所以我們要用正則過濾
for (var in array) 就是數組的遍歷,但是有個坑,man awk,找到其中關於語句for (var in array)的說明,終於恍然大悟——其中寫着:The order that var transverses the indices of array is not defined. 即var以怎樣的順序遍歷array是未定義的,而我卻一直想當然地把它理解成for (var=1; var <= maxindex; var++)的一種簡化寫法。所以,面對未知的事物,還是要保持謹慎的態度
最后print a,S[a] 就很容易懂了,就是 2,hello 1,world
可能你在其它語言見過int a[10];這代表有10個元素的數組,下標為0,1,2,,,9
而awk的下標是字符串,說白了,像極了hash,比如a["hello"] = 'world',只不過我們稱之為數組
同時,你要明白NF是字段數,number of field .比如某一行文件為 hello world,那么NF為2
但是加上$,即$NF就代表第二個字段的內容,那么$NF2 為world
現在回到正文,++S[$NF],就有點類似於,用字典統計文件
比如hello world hello
那么++S【$NF】的結果就是S【“hello”】 = 2,S["world"] = 1
/^tcp/ 表示對每一行進行正則匹配,因為我們netstat會產生udp的行,所以我們要用正則過濾
for (var in array) 就是數組的遍歷,但是有個坑,man awk,找到其中關於語句for (var in array)的說明,終於恍然大悟——其中寫着:The order that var transverses the indices of array is not defined. 即var以怎樣的順序遍歷array是未定義的,而我卻一直想當然地把它理解成for (var=1; var <= maxindex; var++)的一種簡化寫法。所以,面對未知的事物,還是要保持謹慎的態度
最后print a,S[a] 就很容易懂了,就是 2,hello 1,world