2011-04-28 25 views
0

我試圖在一個日誌文件中循環並添加一個字段的出現次數。awk無法讓我爲我的循環上班

我知道該字段#8將有我想要添加的事件,並且該字段將包含1和924

到目前爲止,我有這個AWK一個班輪之間的數字:

awk '{count[$8]++}END{for(j in count) print j, count[j]" HIT"}' myfile.txt 

但是,我想awk輸出的女巫沒有找到出現的數字,並打印0旁邊。

例如:

1 5 HIT 
2 0 HIT 
3 55 HIT 

我嘗試這樣做:

awk '{for(i=1;i<=924;i++) print i, count[$8]++}' myfile.txt 

編輯:我也試過這個

awk '{count[$8]++}END{for(i=1;i<925;i++) print i, count[i]" HIT"}' myfile.txt 

它給了我這樣的:

919 HIT 
920 HIT 
921 HIT 
922 HIT 
923 HIT 
924 HIT 

我相信所有這些都是有價值的。

任何幫助,將不勝感激!

回答

2

試試這個

awk '{count[$8]++}END{for(i=1;i<925;i++) print i, count[i]" HIT"}' myfile.txt 

我希望這有助於。

P.S.因爲你似乎是一個新用戶,如果你得到一個可以幫助你的答案,請記住將它標記爲已接受,並且/或者給它一個+(或 - )作爲有用的答案。

+0

@shelter,我是新來的stackoverflow,但不是serverfault :)我試過你提交的代碼,但計數似乎並不打印。每行都有一個空格(請參閱我的編輯)。 – Alex 2011-04-28 18:58:36

+0

@Alex:嗯..我的解釋是$ 8包含1-924的值。那是對的嗎?如果是這樣,那麼是否有可能在$ 8列中有額外的字符(最有可能的空格)?什麼是FS值。你看起來是使用默認的空白。那是對的嗎? – shellter 2011-04-28 19:10:52

+0

@shelter,謝謝一堆...那裏的數字雙引號...所以改變FS和調整列做了詭計! – Alex 2011-04-28 19:17:21