Como mesclar linhas duplicadas em uma linha separada por vírgula

1

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?

    
por Paul 31.05.2017 / 22:58

2 respostas

1

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
    
por 31.05.2017 / 23:09
1
sed -e '
   :a
   $!N
   s/^\(\(\S\+\)\s\+.*\)\n\s\+/,/;ta
' yourfile

Resultados

St1 apt1,apt2
St2 apt5
St3 apt6,apt7,apt8
    
por 31.05.2017 / 23:50

Tags