【发布时间】:2021-03-15 16:30:45
【问题描述】:
我有一个大型日志文件,其中包含要解析的不同记录类型。它看起来像这样:
$L,8,PO
$L,8,SF
$P,8,P,0,102,0,19:08:34.463
$P,9,P,0,110,0,19:08:34.460
$P,8,P,0,105,0,19:08:34.407
$L,8,SF
$P,9,A,0,139,0,19:08:34.374
$P,15,P,0,103,0,19:08:34.532
$P,8,P,0,73,0,19:08:34.436
$L,8,SF
$L,8,PI
我目前正在使用 CsvHelper 并关注 this example 如何使用 switch 语句读取多种记录类型。但是我有点卡住了,因为我想根据 $L 记录中包含的值对 $P 记录进行分组,然后将输出写入单独的 CSV 文件。
例如,第一条和最后一条 $L 记录都在第二个字段中包含 8,加上 PO/PI 消息(对于所有在第二个字段中包含 8 的 $P 记录,这将是我文件的开始/结束) . 8.csv 的文件输出如下所示:
$P,8,P,0,102,0,19:08:34.463
$P,8,P,0,105,0,19:08:34.407
$P,8,P,0,73,0,19:08:34.436
除了以这种方式将它们组合在一起之外,我还想根据包含 SF 和数字 8 的 $L 消息在 $P 记录之前添加一个数字。上面有 3 条包含 SF 和 8 的 SF 消息,所以最终文件看起来像这样:
1,$P,8,P,0,102,0,19:08:34.463
1,$P,8,P,0,105,0,19:08:34.407
2,$P,8,P,0,73,0,19:08:34.436
完成此任务的最佳方法是什么?目前,我将所有包含相同 ID 号的 $P 消息添加到键值对为:List 的字典中,我不太确定如何使 $P 记录分组取决于值其他记录。
【问题讨论】: