Simplesmente com awk :
awk '{ r=$0; sub($1,"",r); a[$1]=(a[$1])? a[$1]"\t"r : r }
END{ for(i in a) { gsub(/[[:space:]]{2,}/," ",a[i]); print i,a[i] } }' file
-
r=$0
- capturando cópia do registro -
sub($1,"",r)
- removendo o primeiro campo da cópia para armazenar os campos restantes na variávelr
-
a[$1]=(a[$1])? a[$1]"\t"r : r
- acumulando valores para o mesmo grupo (apresentado pelo 1º campo) -
for(i in a)
- iterando por todos os itens agrupados -
gsub(/[[:space:]]{2,}/," ",a[i])
- removendo espaços em branco excessivos entre palavras -
print i,a[i]
- imprima o nome do grupo e seus valores
A saída:
DAPPUDRAFT_194440 Phosphorous Temperature
DAPPUDRAFT_196694 Salinity
DAPPUDRAFT_194512 Fishkairomones Cadmium Zinc Quantumdots
DAPPUDRAFT_194472 Phosphorous Fishkairomones Temperature
DAPPUDRAFT_196131 Salinity Phosphorous hypoxia
DAPPUDRAFT_195644 Salinity Phosphorous