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

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 для этого?

DisgruntledGoat
источник

Ответы:

19

Если этот формат согласован и поле действительно заключено в двойные кавычки, вы можете использовать "в качестве разделителя полей awk или cut :

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

или же:

cut -d\" -f 6
Калеб
источник
3
perl -ne 'if (/ "([^"] +) "$ /) {$ ua {$ 1} ++;} END {for (keys% ua) {print" $ ua {$ _} $ _ \ n "}} '\
  access_log
RedGrittyBrick
источник