【问题标题】: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\""

      【讨论】:

        猜你喜欢
        • 2017-03-02
        • 2021-07-24
        • 2011-02-19
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多