
Мне нужно форматирование для моего файла, чтобы добавить столбцы строки в другой с тем же конкретным столбцом. Столбец, который должен совпадать, это 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