каждый, я имею дело с файлом журнала, который имеет около 5 миллионов строк, поэтому я использую оболочку 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, она только читает каждую строку один раз, но время увеличивается ...
так что, если вы знаетеответь, скажи мне