com awk
:
awk '{ seen[$2]= seen[$2]? seen[$2]FS$1:$1 }
END{ for (x in seen) print seen[x], x }' infile
15 16 23
17 18 24
Aqui estamos usando o array seen
com a chave da coluna $2
e o valor da coluna $1
. se a chave $2
for a mesma para cada valor, anexe esse valor ao final de seu valor anterior na matriz e, no valor final END
print, primeiro, em seguida, sua chave.
A condição Ternary é usada para verificar se, para essa chave, havia valor na matriz antes, se for o caso, então acrescente o novo valor ao final do valor de saída com o padrão F ield S eperador FS
entre; senão adicione esse valor como primeiro valor.