Possível solução poderia ser usar awk
:
awk -F";" '{ for (i = 2; i <= NF; i++) { printf("%s;%s\n", $1, $i); } }' file
Com awk -F";"
, definimos FS
(separador de campo) como ;
. Então, para cada linha (registro), começamos do campo 2 para o último campo ( NF
): for (i = 2; i <= NF; i++)
e imprimimos o campo 1 e o campo atual ( $i
).