web-dev-qa-db-ja.com

UNIXのファイルを異なるフィールドでアルファベット順と数値順に並べ替える方法は?

これが「Unixでの英数字データの並べ替え」の質問の繰り返しだとは思わないでください。他の答えを見て、私の場合は少し違うと思います!

このようなデータがあります:

A    192
D    112
D    188
C    091
A    281
B    919

...最初の列1(アルファベット順)、次に列2(数値順)で並べ替えます。私は使用してみました:

sort -n -k1,2

...しかし、これにより、最初のフィールドは正しくソートされましたが、2番目のフィールド(1,10,1000,1002,1003ではなく、1000,1002,1003,10,1 ...)のソートは正しくありませんでした。

誰かが私が好きな方法でこれら2つの列をソートする方法を提案できますか?

31
jake9115

次のように使用してみてください:-

sort -k1,1 -k4,4n
  • -n:数値に従ってプログラムをソートします
  • -k opts:指定された列番号を使用してデータ/フィールドをソートします。たとえば、オプション-k 2は、2番目の
    列のデータ。オプション-k 3,3n -k 4,4nは、各列をソートします。最初
    3列目、次に4列目をソートします。
39
Rahul Tripathi

これは動作するはずです:

sort -t "," -k1,1 -k2n,2 file
6
jenish