我是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,错误消息(File does not exist)和目标(/var/www/html/)?
谢谢你
3条答案
按热度按时间wydwbb8l1#
有很多方法可以在shell脚本中实现它。将详细描述该方法并给予一个示例。
您必须确定分隔符来对字符串进行分区,您可以使用awk或sed命令根据分隔符对字段进行分区
例如,在你的情况下,你可以考虑']'作为定界符,使用定界符命令将行断开,如下所示:
46qrfjad2#
最简单的方法是使用自己的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\""
8gsdolmq3#
我使用
report
命令行实用程序:https://github.com/MatteoGuadrini/pyreports#command-line我按照这个文档学习YAML语法:https://pyreports.readthedocs.io/en/latest/dev/cli.html#command-line-interface