単一列値に基づいて複数行をマージ

単一列値に基づいて複数行をマージ

次の入力ファイルがあります。

  3 1 10 1 6  
  9 4 2  4 1  
  9 2 2  2 1

5番目の列の値に基づいて2行をマージしたいと思います。出力は次のとおりです。

 3 1 10 1 6  
 9 4 2  4 9 2 2  2 1

誰でもこれを説明できますか?

ありがとう

ベストアンサー1

パールの使用:

$ perl -lane 'push @{$vals{$F[4]}}, @F[0..3];
              END { $, = " "; for $v (sort keys %vals) { print @{$vals{$v}}, $v } }' input.txt
9 4 2 4 9 2 2 2 1
3 1 10 1 6

awkを使用してください:

$ awk '{vals[$5] = vals[$5] $1 " " $2 " " $3 " " $4 " "}
       END { for (v in vals) print vals[v] v }' input.txt
9 4 2 4 9 2 2 2 1
3 1 10 1 6

おすすめ記事