bash - 一行中的多个 awks
问题描述
我从访问日志中获取输出以查看命中计数、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 在同一行。
解决方案
推荐阅读
- python - 为什么 Python 在计算过程中会失去一些价值?
- css - 复杂背景不适用于背景大小的封面
- javascript - Typescript 中的动态类/接口(w Angular)
- c++ - 使用 NetCDF C 库时出现链接错误
- azure - 另一个 ASP.Net MVC 项目下的子域 ASP.Net API 项目
- c++ - 通过 TCP 进行 PvP 通信的问题
- javascript - 防止引导模型弹出窗口在按下空格键时关闭
- python - 如何在熊猫的单列中显示所有行?
- python - Pycharm子进程调用未找到已安装的软件
- angular - 使用“jasmine-marbles”测试我的服务时出现“应该正确返回”错误