S3.Blog

20 Августа 2017
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

Linux: Сгруппировать и посчитать

Дата последнего изменения: 2 Октября 2015
Метки статьи: Одной строкой, Linux, Shell/Bash
Однострочник, представленный ниже, пригодится тем, кому надо быстро что-то сгруппировать и посчитать совпадения - например логи апача.
 

Для примера я буду использовать вот логи в таком формате, которые находятся в access.log:
xxx.xxx.xxx.xxx - - [02/Oct/2015:12:11:07 +0300] "GET /program-weather.html HTTP/1.1" 200 108208 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0"
xxx.xxx.xxx.xxx - - [02/Oct/2015:20:25:57 +0300] "GET /img/favicon.ico HTTP/1.1" 200 894 "-" "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
xxx.xxx.xxx.xxx - - [02/Oct/2015:20:31:58 +0300] "GET / HTTP/1.1" 200 22857 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"

  • Задача 1 - посчитать количество запросов к favicon.ico
    # grep favicon.ico access.log | wc -l
    
    результат:
    779
    
  • Задача 2 - посчитать количество запросов к favicon.ico, но сгруппированные по версии браузера
    # grep favicon.ico access.log | awk -F\" '{print $6}' | sed 's/(\([^;]\+\)[^)]*)//' | awk '{print $3}' | sort | uniq -c | sort -rn
    
    результат:
        377 Firefox/40.0
        361 Firefox/41.0
         35 Firefox/38.0
          4 YaBrowser/15.7.2357.2877
          1 IceDragon/38.0.5
          1 YaBrowser/14.5.1847.18274    
  • Задача 3 - посчитать все запросы сгруппированные по версии браузера
    # awk -F\" '{print $6}' access.log | sed 's/(\([^;]\+\)[^)]*)//' | awk '{print $3}' | sort | uniq -c | sort -rn
    
    результат:
       6901 Firefox/40.0
       5197 Firefox/41.0
        541 Firefox/38.0
        259 YaBrowser/15.7.2357.2877
         54 IceDragon/38.0.5
         52 YaBrowser/14.5.1847.18274




Похожие материалы:




 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.