AWK возвращает дублированную запись при обходе массива - PullRequest
0 голосов
/ 29 мая 2018

Я собираю данные из 15 М записей (файл XXX) в массивы с помощью awk.При завершении awk я печатаю каждую агрегированную запись (приблизительно, 2,25 М), но время от времени она возвращает 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

Есть ли в коде что-то, что может привести к дублированию записей?В связи с этим, когда это происходит, возникает сообщение об ошибке «невозможно разветвить», поскольку используется 12 ГБ из 16 ГБ, на которых установлен компьютер.Есть ли какая-либо причина, которая может привести к этой ошибке?

Я уже проверил, что в файле нет специальных символов, поскольку они могут привести к "поддельным" дублированным ключам.

###### ДАННЫЕ
INPUT
#...### 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 #####
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...