Transpõe o arquivo cvs pelo valor de uma coluna

0

Entrada:

X Y
1 11
1 12
2 21
2 22

Saída desejada:

11 12
21 22

Eu quero transpor o arquivo cvs pelo valor da coluna 1. Neste exemplo, para X = 1, transponha (11, 12) ^ T para (11, 12); para X = 2, transpor (21, 22) ^ T para (21, 22)

    
por John Hass 19.10.2016 / 18:54

1 resposta

1

perl

perl -lane '
    push @{$rows{$F[0]}}, $F[1] if $. > 1
  } END {
    $, = " ";
    print @{$rows{$_}} for (sort keys %rows);
' file

awk, assume que a entrada está ordenada na coluna 1:

awk '
    NR == 1 {next}
    NR == 2 {key = $1} 
    $1 != key {print ""; key = $1} 
    {printf "%s ", $2} 
    END {print ""}
' file
    
por 19.10.2016 / 21:05