大家,我处理拥有约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