【问题标题】:Convert linux log into csv将linux日志转换成csv
【发布时间】:2015-05-07 15:04:48
【问题描述】:
我是 linux 新手。我很抱歉再次问这个问题。但如果有人可以帮助我,我真的很感激。我无法将我的 linux 日志转换为 csv 文件以提高可读性。
我的 apache 日志如下:
[Sun Mar 01 06:01:30 2015] [error] [client 123.456.789.012] File does not exist: /var/www/html/
如何按列将它们分开,使用:日期(Sun Mar 01 06:01:30 2015)、IP (123.456.789.012) 仅 IP、错误消息(文件不存在)和目标(/var/www/html/)?
谢谢
【问题讨论】:
标签:
linux
bash
csv
logging
【解决方案1】:
有很多方法可以在 shell 脚本中实现。将详细描述该方法,并给出一个示例。
您必须识别分隔符来对字符串进行分区,您可以使用 awk 或 sed 命令根据分隔符对字段进行分区
例如,在您的情况下,您可以考虑将 ']' 作为 delimiter 来使用 delimiter 命令来换行,如下所示:
cat logfile | awk -F']' '{print "$1, $2, $3"}' > new_log_file.csv
【解决方案2】:
最简单的方法是使用您自己的 Logformat 字符串。您可以修改标准 LogFormat 以使用 TAB 而不是空格作为分隔符。通常称为组合 LogFormat 的标准或通用日志格式如下所示:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
如果您想要一个 TAB 分隔文件,只需在服务器配置文件中使用此 CustomLog 语句:
Customlog logs/tabbed-logfile "%h\t%l\t%u\t%t\t\"%r\"\t%>s\t%b\t\"%{Referer}i\"\t\"%{User-Agent}i\""