複数の区切りファイルを1つの列に基づいて辞書形式で、別の列に基づいて数字で並べ替える

複数の区切りファイルを1つの列に基づいて辞書形式で、別の列に基づいて数字で並べ替える

min_ex以下のTSVファイル(と呼ばれる)を最初の列に基づいてアルファベット順に並べ替え、2番目の列に基づいて数字を並べ替えたいと思います。

A X, N    2.2
A, N    5.7
A, A    5.8
A, N    2.1
A, T    0.2
B G, M    2.3
B, L    0.1
B, I    0.2
B, M    9.3
B, C    9.9

私はこれをしようとしていますsort -k1,2 -n min_ex。ただし、次のような結果が発生するため動作しません。

A, A    5.8
A, N    2.1
A, N    5.7
A, T    0.2
A X, N    2.2
B, C    9.9
B G, M    2.3
B, I    0.2
B, L    0.1
B, M    9.3

また、(実験を通して)区切り文字としてスペースがあると確信していますが、sort区切り文字を設定するオプションは表示されません。

私はsed純粋なAWKを使用するか、まったく使用しない(どちらも好む場合)ソリューションを望んでおり、できるだけPOSIX仕様を維持したいと思います。

ベストアンサー1

sort -t$'\t' -k1,1 -k2,2n

効果があった、そうだったPOSIX互換いくつかを除いて$'\t'-tフィールド区切り文字を指定します(デフォルトの空白を空白ではなく空白に変換する代わりに)、サフィックスはn個々のフィールド定義に適用できます。

おすすめ記事