Добавление столбца с тем же ключом в файл

Добавление столбца с тем же ключом в файл

Мне нужно форматирование для моего файла, чтобы добавить столбцы строки в другой с тем же конкретным столбцом. Столбец, который должен совпадать, это 1-й столбец (числа) и Тип (Sword_SC, Fire_ball_sc, Fire_sc). Обратите внимание, что если 1-й столбец и временная метка были одинаковыми, но Тип был таким, как 'FIRE%', их все равно нужно объединить в одну строку.

Очень ценю вашу помощь.

ОБРАЗЕЦ ФАЙЛА:

09123456789|Alarm|Alarm 2020-04-15 00:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09123456789|Alarm|Alarm 2020-04-15 04:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09123456789|Alarm|Alarm 2020-04-15 15:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09123456789|Alarm|Alarm 2020-04-15 16:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09123456789|Alarm|Alarm 2020-04-15 20:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09222222222|Alarm|Alarm 2020-04-15 00:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09222222222|Alarm|Alarm 2020-04-15 04:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09222222222|Alarm|Alarm 2020-04-15 15:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09222222222|Alarm|Alarm 2020-04-15 16:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09222222222|Alarm|Alarm 2020-04-15 20:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09555555555|Alarm|Alarm 2020-04-15 20:59:59^Breached Threshold^FIRE_BALL_SC @ 0.0 ^Sample Size: 1
09555555555|Alarm|Alarm 2020-04-15 20:59:59^Breached Threshold^FIRE_SC @ 0.0 ^Sample Size: 1

ЖЕЛАНИЕ ВЫХОД

09123456789|Alarm|Alarm 2020-04-15 00:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1^^Alarm 2020-04-15 04:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1^^Alarm 2020-04-15 15:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1^^Alarm 2020-04-15 16:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1^^Alarm 2020-04-15 20:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09222222222|Alarm|Alarm 2020-04-15 00:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1^^Alarm 2020-04-15 04:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1^^Alarm 2020-04-15 15:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1^^Alarm 2020-04-15 16:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1^^Alarm 2020-04-15 20:59:59^Breached Threshold^Sword_SC @ 0.0 ^Sample Size: 1
09555555555|Alarm|Alarm 2020-04-15 20:59:59^Breached Threshold^FIRE_BALL_SC @ 0.0 ^Sample Size: 1^^Alarm 2020-04-15 20:59:59^Breached Threshold^FIRE_SC @ 0.0 ^Sample Size: 1

решение1

GNU-awk-программа

gawk -F '|' -v OFS='|' '
  {
    n = split($3, fields, /\^/)
    key = $1 substr(fields[3], 1, 4)
    alarms[key] = alarms[key] sep[key] $3
    sep[key] = "^^"
  }
  END {
    PROCINFO["sorted_in"] = "@ind_num_asc"
    for (key in alarms) print gensub(/....$/, "", 1, key), "Alarm", alarms[key]
  }
' file

Связанный контент