我将15 M记录(文件XXX)中的数据聚集到带有awk的数组中。当结束awk时,我打印每个聚合记录(aprox,2,25 M),但是,有时会返回1个重复记录。代码(简化)是这样的:
awk '{
id=substr($0,18,25)
date=substr($0,131,14)
field_#=substr($0,##,###) --> Many fields
key=id "," date
array_#[key]=array_#[key] + field_# --> 4 arrays, some using 3 fields
}END{
for key in array_1{
print(array_1[key] "," array_2[key] "," array_3[key] "," array_4[key])
}
}' XXX
代码中是否存在可能导致重复记录的内容? 与此相关的是,当这种情况发生时,它会引发一个“不能分叉”的问题。内存错误消息,因为它使用了具有该机器的16GB中的12 GB。有什么理由可以导致这个错误吗?
我已经检查过文件中没有任何特殊字符,因为它们可能导致"假的"重复的密钥。
###### DATAINPUT
#...### IDENTIFIER ####...### VOL_UP VOL_DOWN VOL_TOTAL ###...#### YYYYMMDDHHMISS #####
#...### 9876123 ####...### 123456 665204500 665327956 ###...#### 20180529020103 #####
#...### 7854954 ####...### 654 456121 456775 ###...#### 20180529102501 #####
#...### 9876123 ####...### 105251 58044518 58149769 ###...#### 20180529020103 #####
OUTPUT
#...### 9876123 ####...### 228707 723249018 723477725 ###...#### 20180529020103 #####
#...### 7854954 ####...### 654 456121 456775 ###...#### 20180529102501 #####