Awk solução:
awk 'BEGIN{ FS = OFS = ";" }
$1 == "KEY"{ id = $6; next }
{ print $0 (NF? OFS id : "") }' file.csv
-
FS = OFS = ";"- trata;como separador de campo (FS) e separador de campo de saída (OFS) -
$1 == "KEY"{ id = $6; next }- se o primeiro campo$1for igual a"KEY"string - definaidvariable com o sexto campo$6. %nextforçaráawka pular para o próximo registro (ignorando o atual) -
print $0 (NF? OFS id : "")- imprime / imprime todo o registro$0com condição:
se houver algum campo dentro de um registro (assegurado pela variável internaNF), ou seja, o registro não está vazio - anexar;( comoOFS) e atualidvalor ao final do registro
A saída:
SUBKEY;..;..;id1
SUBKEY;..;..;id1
SUBKEY;..;..;id1
SUBKEY;..;..;id2
SUBKEY;..;..;id2
SUBKEY;..;..;id2