Я получаю выходные данные из журналов доступа для просмотра количества обращений, IP-адреса и пользовательского агента.Вывод не работает, потому что он не захватывает все, что мне нужно в строке агента пользователя.
Пример вывода:
Getting access logs from /var/log/apache2/my.access.log ...
Sorting unique IPs...
COUNT IP Address | User Agent String
15165 xx.xxx.xxx.xx | "Mozilla/5.0 <--- Need everything between quotes
10704 xx.xxx.xxx.xx | "Mozilla/5.0 not just this portion
9915 xx.xxx.xxx.xx | "Mozilla/5.0
8240 xx.xxx.xxx.xx | "Mozilla/5.0
7770 xx.xxx.xxx.xx | "Mozilla/5.0
7266 xx.xxx.xxx.xx | "Mozilla/5.0
Строка, которая получает эту информацию:
cat /var/log/apache2/my.access.log | awk '{print $11 " | " $24 " " $25 " " $26}' | sort -n | uniq -c | sort -nr | head -30
Я понимаю, что часть с $ 24 "" $ 25 "" $ 26 на самом деле можетбыть очищенным с
awk -F\" '{ print $6 }'
Мой вопрос: как я могу добавить их обоих в одну строку, если это возможно?
Пример необработанного вывода файла журнала (с измененным текстом):
[2018-10-10 10:11:22 (Wed)] | <servername> | R:<servername> | www.<thewebsite>.com | xxx.xxx.xx.xxx |"GET /script/that/was/accessed HTTP/1.1" | 200 | 1430 | 8104 | "https://www.<thewebsite>.com" | "Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko"
Мне нужен последний раздел, начинающийся с "Mozilla / 5.0" вплоть до другой кавычки, но вта же строка, что и у других awk.