大家,我處理擁有約500萬行日誌文件,所以我用awk的外殼在linux關於awk的外殼和管在linux
我到grep域,並獲得最高100日誌,所以我寫這樣的:
awk '{print $19}' $1 |
awk '{ split($0, string, "/");print string[1]}' |
awk '{domains[$0]++} END{for(j in domains) print domains[j], j}' |
sort -n | tail -n 100 > $2
它運行約13秒
然後我改劇本是這樣的:
awk 'split($19, string, "/"); domains[string[1]]++}
END{for(j in domains) print domains[j], j}' $1 |
sort -n | tail -n 100 > $2
它運行約21秒
爲什麼?
你知道的awk殼的一條線可以減少CAL的總和,它只能讀取每一行一次,但時間的增加...
所以,如果你知道答案,告訴我
哪個CPU和OS? – mouviciel
以及你的輸入數據是怎樣的?你想要提取並保存什麼信息? – Kent
+1問題,研究和格式!你是否不止一次運行這個程序,或許是第二次運行時有高CPU任務運行?否則,我同意@rjack分裂工作改善表現。祝你好運:-) – shellter