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
:$a
está definido como1
no primeiro arquivo e2
no 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