从复杂格式的文本文件中提取数据

例题描述和简单分析

有大量的txt文件,每个txt约几千行,其中包含部分数据如下所示:

...

23:50:55.818> setconfig,FF:FF:FF:FF:FF:FF,116080121072980303073,Tue Aug 03 23:50:55 2021,,,,,,,,,-999,-999,-999,-999,-999,-999,00.515,0,0,0,Pass

...

23:51:00.625> WL_DUT0 manfinfo output: OTP_LOT_NUM: 0x1082

WAFER_NUM: 0xd

WAFER_X: 0x16

WAFER_Y: 0x25

...

数据提取要求(以上数据为例):

1. 提取第一次出现setconfig, (文本中多次出现), 后面的116080121072980303073

2. 提取第一次出现WL_DUT0 manfinfo output: OTP_LOT_NUM:后面的0x1082, 及下面三行后的0xd,0x16,0x25

3. 输出excel116080121072980303073,0x1082,0xd,0x16,0x25, 5列显示,结果如下所示:


A

B

C

D

E

1

SN

OTP_LOT_NUM

WAFER_NUM

WAFER_X

WAFER_Y

2

21072980303051

0x1082

0xd

0x17

0x1c

3

72980303054

0x1082

0xd

0x13

0x1d

4

116080121072980303073

0x1082

0xd

0x16

0x25

解法及简要说明

在集算器中编写脚本p1.dfx,如下所示: 


A

B

1

=create(SN,OTP_LOT_NUM,WAFER_NUM,WAFER_X,WAFER_Y)

2

=directory@p("*.txt").(file(~))

3

for A2

=A3.import@i()

4


=B3.select@1(pos(~,"setconfig,")).split@c()(3)

5


=B3.pselect@1(pos(~,"WL_DUT0 manfinfo output:"))

6


=B3.m(B5:B5+3).(~.split(":").m(-1))

7


=A1.record(B4|B6)

8

=file("result.xlsx").xlsexport@t(A1)

简要说明:

A1   建空序表(SN,OTP_LOT_NUM,WAFER_NUM,WAFER_X,WAFER_Y)

A2  列出满足通配符路径的文件名

A3   循环A2

B3  txt返回成序列

B4  计算满足要求1SN

B5  计算要求2的位置

B6  取要求2的四行数据,计算要求2的各值

B7  序表A1追加记录

A8  结果导出至result.xlsx

问答搜集

https://club.excelhome.net/thread-1594992-1-1.html