com awk
:
$ awk -F, '{a[$1] = a[$1]=="" ? $2 : a[$1] OFS $2} END {for (i in a) printf("%s,%s\n", i, a[i])}' file.csv
A,dog cat horse cow deer goat
B,goat deer fish
C,dog cat goat
Com o% GNUdatamash
+ sed
:
$ datamash -st, groupby 1 collapse 2 < file.csv | sed 's/,/ /2g'
A,dog cat horse cow deer goat
B,goat deer fish
C,dog cat goat
Note que a ordem de saída não é garantida na versão awk: se você tem o GNU awk > = 4.0, você pode controlar isso usando a estrutura PROCINFO
.