我的 httpd 日志具有以下格式
123.251.0.000 - - [05/Sep/2014:18:19:24 -0700] "GET /myapp/MyService?param1=value1¶m2=value2¶m3=value3 HTTP/1.1" 200 15138 "-" "-"
我需要提取以下字段并显示在一行上:
IP value1 httpResponseCode(eg.200), dataLength
在 bash 中执行此操作最有效的方法是什么?
最佳答案
当您使用 Linux 时,您很可能还安装了 GNU awk
。如果是这样:
$ awk 'match ($7, /param1=([^& ]*)/, m) { print $1, m[1], $9",", $10 }' http.log
给出:
123.251.0.000 value1 200, 15138
只要 value1
中没有 & 符号或空格,这种方法就有效,如果请求已正确转义,则不应有这种情况。
关于linux - 解析 bash 中的 httpd 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25702252/