求大神,刚刚写 shell , Apache 的日志文件格式大致是这样的 127.0.0.1 - - [27/May/2016:14:58:56 +0000] "GET /platform/iphone?Version=2.0.0.4&UserName=13123&domainId= HTTP/1.0" 200 709 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-" 我想要得出来的格式是,几号 | 什么设备 |版本号|使用名称这样的格式请问该怎么写,目前得出了 27/may/2016 iphone?version=2.0.0.4&username=13123 请问接下来怎么办 数据基本是这个格式,是不是该截取各个部分
1
vinceguo 2016-11-02 22:49:28 +08:00 via Android
这东西估计用 python 处理更好点。 shell 得字符串处理比较弱,而且可读性极差(即使用 sed 和 awk )。
去 github 上看看有没有别人写的 apache 日志解析逻辑 |
2
zhuangzhuang1988 2016-11-02 23:42:28 +08:00
搜了下, apache 的日志模式不太好, 如果是 nginx ,支持 json 输出。 好解析多了。
|
3
debiann 2016-11-02 23:48:31 +08:00 via iPhone 1
awk ,利用 FS 分割就行了。
不需要一步到位,一点一点处理,写起来思路清楚,可读性也好 |
4
privil 2016-11-02 23:50:01 +08:00 via iPhone 1
awk 支持多个不同的分隔符 awk -F "?|&| |=" 然后重新格式化一下就好了
|
5
234747005 2016-11-03 09:48:20 +08:00
为什么不考虑用 goaccess
|