Як я можу витягнути рядки агента користувача з файлу журналу?


12

Наразі я виконую таку команду, щоб отримати найбільш запитуваний вміст:

grep "17\/Jul\/2011" other_vhosts_access.log | awk '{print $8}' | sort | uniq -c | sort -nr

Я хочу зараз побачити рядки агента користувача, але проблема полягає в тому, що вони включають кілька пробілів. Ось типовий рядок файлу журналу. UA - це останній розділ, розділений лапками:

example.com:80 [ip] - - [17/Jul/2011:23:59:59 +0100] "GET [url] HTTP/1.1" 200 6449 "[referer]" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30"

Чи є для цього кращий інструмент, ніж awk?

Відповіді:


19

Якщо цей формат є узгоджуваним і поле дійсно загорнуте у подвійні лапки, ви можете використовувати або awk, або вирізати, "як роздільник поля:

awk -F\" '{print $6}'

або:

cut -d\" -f 6

3
perl -ne 'if (/ "([^"] +) "$ /) {$ ua {$ 1} ++;} END {for (клавіші% ua) {print" $ ua {$ _} $ _ \ n "}} '\
  access_log
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.