Apenas alguns ajustes:
$ awk '
BEGIN{FS="\t"; OFS=FS};
{ arr[$1] = arr[$1] == ""? $2 : arr[$1] "," $2 }
END {for (i in arr) print i, arr[i] }
' data
St1 apt1,apt2
St2 apt5
St3 apt6,apt7,apt8
Eu tenho os seguintes dados:
St1 apt1
St1 apt2
St2 apt5
St3 apt6
St3 apt7
St3 apt8
Eu gostaria de mesclar as linhas duplicadas e separar os campos por vírgula e ter duas colunas, por exemplo:
St1 apt1,apt2
St2 apt5
St3 apt6,apt7,apt8
Eu tentei o comando abaixo, mas não funcionou como esperado:
awk 'BEGIN{FS="\t"}; BEGIN{OFS="\t"}; { arr[$1] = arr[$1] $2 } END {for (i in arr) print i arr[i] }'
O resultado foi:
St1apt1apt2
St2apt5
St3apt6apt7apt8
Alguma sugestão?
sed -e '
:a
$!N
s/^\(\(\S\+\)\s\+.*\)\n\s\+/,/;ta
' yourfile
St1 apt1,apt2
St2 apt5
St3 apt6,apt7,apt8