可以使用以下命令将 JSON 格式 Nginx 日志转换为 CSV 格式:

awk -F'[:,}]' '{gsub(/"/, "'"); printf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n", $2"/"$3"/"$4" "$5":$6":"$7, $10, $14, $18, $22, $26, $30, $34, $38, $42, $46, $50, $54)}' access.log > access.csv

解释:

  • -F'[:,}]' 表示以冒号、逗号和右花括号作为分隔符。
  • gsub(/"/, "'") 表示将双引号替换为单引号。
  • $2"/"$3"/"$4" "$5":$6":"$7 表示将时间字段拼接成完整的日期和时间格式。
  • $10, $14, $18, $22, $26, $30, $34, $38, $42, $46, $50, $54 表示将其他字段输出到 CSV 文件中。
  • access.log 是原始日志文件名。
  • access.csv 是转换后的 CSV 文件名。

注意:

如果日志中有双引号或逗号,可能会影响转换结果。为了避免此问题,您可能需要使用其他工具或脚本进行额外的处理。例如,您可以使用 sed 命令来替换日志中的特殊字符,或者使用更强大的解析库来处理 JSON 格式数据。

将 JSON 格式 Nginx 日志转换为 CSV:完整时间戳处理

原文地址: https://www.cveoy.top/t/topic/msXj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录