dketov
8/1/2016 - 10:49 PM

4.py

#!/bin/sh
# Предположим, у нас есть access.log веб-сервера.
# Как с помощью стандартных консольных средств найти десять IP-адресов,
# от которых было больше всего запросов?

awk '
  { counter[$1]++ }

  END {
    for(x in counter)
      print counter[x], x;
  }
' |
sort -k1 -n -r |
head -10 | 
awk '{ print $2 }'
#!/usr/bin/python
"""
Предположим, у нас есть access.log веб-сервера.
Как с помощью стандартных консольных средств найти десять IP-адресов,
от которых было больше всего запросов?
А как сделать это с помощью скрипта на Python?
"""
import sys
from collections import Counter

counter = Counter(
  line.split(None, 1)[0]
    for line in sys.stdin
)

freqdict = sorted(
  counter.iteritems(),
  key = lambda (k, v): v,
  reverse = True
)

print "\n".join(
  ip for ip, freq in 
    freqdict[:10]
)