将日志文件转换成标准 csv
log 文件有 3 列,分隔符是空格。
2022-06-01 11:00:00 wt.nm=aa&wt.ti=t1& 2022-06-02 12:00:00 wt.nm=ab&wt.ti=t2& 2022-06-03 10:00:00 wt.nm=ac&wt.ti=t3& |
用 Java 将 log 文件转为带标题的 csv 文件,需要保留前 2 列,将第 3 列按 "&" 拆分,取前 2 部分的等号右边的字符串,形成新的第 3 列和第 4 列:
date,time,name,title 2022-06-01,11:00:00,aa,t1 2022-06-02,12:00:00,ab,t2 2022-06-03,10:00:00,ac,t3 |
SPL脚本:
A |
|
1 |
=file("data.log").import(;," ") |
2 |
=A1.new(#1:date,#2:time,(t=#3.split("&").(~.split("=")))(1)(2):name,t(2)(2):title) |
3 |
>file("result.csv").export@tc(A2) |
A1:将文本文件读为二维表,分隔符为空格。
A2:用计算列新建二维表,#1 表示第 1 列,t(1)(2) 表示序列的第 1 个成员的第 2 个子成员。
A3:将二维表写入文本文件,@c 表示分隔符为逗号,@t 表示带标题。
Java 集成 SPL 可参考 Java 如何调用 SPL 脚本
问题来源:https://stackoverflow.com/questions/72587905/how-to-parse-log-file-to-csv-file-in-java
英文版