linux - 解析 bash 中的 httpd 日志

标签 linux bash apache

我的 httpd 日志具有以下格式

123.251.0.000 - - [05/Sep/2014:18:19:24 -0700] "GET /myapp/MyService?param1=value1&param2=value2&param3=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/

相关文章:

linux - Flume - 在 Linux 中将日志文件从 Windows 流式传输到 HDFS

linux - 如何在 Windows 中运行 Matlab 中的 Unix 命令?

linux - OpenGL 应用程序导致 Xorg 泄漏

linux - grep,如何搜索确切的模式?

apache - 无法提交到 SVN(路径 ... 已存在)

mysql - 如何导出数据库?我正在使用teraterm

sql - 使用 SQL Server 在 Linux 上运行目录中的所有 .sql 文件

bash - bash 关联数组的基本错误值很大

regex - .htaccess mod_rewrite 中的百分号

android - 如何在使用由 Apache 提供支持的库的 Android 应用程序中添加 Apache License 2.0