将 JSON 格式 Nginx 日志转换为 CSV:完整时间戳处理
可以使用以下命令将 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 格式数据。
原文地址: https://www.cveoy.top/t/topic/msXj 著作权归作者所有。请勿转载和采集!