他の列の値に基づいて列の値を並べ替えるには?

他の列の値に基づいて列の値を並べ替えるには?

与えられたタブで区切られたデータをソートしたいと思います。

  • 最初のレベルは列1で、昇順にソートされます。
  • 2番目のレベルは、列2も昇順にソートされることです(ただし条件付き)。 健康状態:列3は一意の値にグループ化する必要がありますが、列2のソート順序もできるだけ維持する必要があります(最小範囲は上にあります)。
  • 列3はまったく揃っていませんが、グループ化する必要があります。

入力データ:

2    15881764  9         C|T
2    15881767  9         C|C
2    15881989  4         C|C
2    15882091  4         G|T
2    15882451  9         C|T
2    15882454  9         C|T
2    15882493  9         C|T
2    15882505  6         A|T
3    16882450  6         C|T
3    16882594  6         C|T
3    16882633  6         C|T
3    16882755  6         A|T

予想出力:

2    15881764  9         C|T
2    15881767  9         C|C
2    15882451  9         C|T
2    15882454  9         C|T
2    15882493  9         C|T
2    15881989  4         C|C
2    15882091  4         G|T
2    15882505  6         A|T
3    16882450  6         C|T
3    16882594  6         C|T
3    16882633  6         C|T
3    16882755  6         A|T

すべてのUNIXベースのユーティリティが可能ですが、読みやすくするために、sortとawkがより良いです。

ベストアンサー1

sort -k1,1n -k3,3n -k2,2n file

まず、列1で数値順に並べ替えます。
同点の場合は、3列の数字で並べ替えてください。
同点の場合は、2列の数字で並べ替えてください。

おすすめ記事