Com o GNU awk :
awk -F= '{a=(FNR!=NR)+1;printf "%s"(NR%4==0?RS:";"),$a} a==1&&NR>=4{nextfile}' file file
No entanto, se você não precisar da linha de cabeçalho, isso também fará o trabalho (e também trabalhará com mawk ):
awk -F= '{printf "%s"(NR%4==0?RS:";"),$2}' file
Explicação:
-
-F=define o separador de campo como=. -
a=(FNR!=NR)+1:$aestá definido como1no primeiro arquivo e2no segundo. -
printf "%s"(NR%4==0?RS:";"),$a: imprime a string e se for uma quarta linha imprima o separador de linhaRS, senão imprima o separador de campo; -
a==1&&NR>=4: se estivermos no primeiro arquivo e 4 linhas forem processadas ... -
nextfile... começa a processar o próximo arquivo (isso é específico do GNU)
Saída:
EventTime;ObjectOfReference;SPtext;EAName
20180726001317;TCU_XXX202;Heartbeat Failure;TCU_XXX202
20180726001317;TCU_XXX203;Heartbeat Failure;TCU_XXX203