列値によるCSVファイルの転置

列値によるCSVファイルの転置

入力する:

X Y
1 11
1 12
2 21
2 22

希望の出力:

11 12
21 22

CSVファイルを列1の値に置き換えたいです。この例では、X = 1の場合(11、12)^ Tを(11、12)に変更し、X = 2の場合(21、22)^ Tを(21、22)に置き換えます。

答え1

真珠

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

awk、入力が列1に揃っているとします。

awk '
    NR == 1 {next}
    NR == 2 {key = $1} 
    $1 != key {print ""; key = $1} 
    {printf "%s ", $2} 
    END {print ""}
' file

関連情報