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$1
for igual a"KEY"
string - definaid
variable com o sexto campo$6
. %next
forçaráawk
a pular para o próximo registro (ignorando o atual) -
print $0 (NF? OFS id : "")
- imprime / imprime todo o registro$0
com 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 atualid
valor ao final do registro
A saída:
SUBKEY;..;..;id1
SUBKEY;..;..;id1
SUBKEY;..;..;id1
SUBKEY;..;..;id2
SUBKEY;..;..;id2
SUBKEY;..;..;id2