数字とアルファベット文字を混在させて並べ替えるには?

数字とアルファベット文字を混在させて並べ替えるには?

コマンドを使用してsortこれらの入力をどのようにソートできますか?数字を文字の前に数字順に並べ替えたいと思います。

10
11
12
1
13
14
15
16
17
18
19
20
21
2
22
3
4
5
6
7
8
9
X
Y

ベストアンサー1

X@terdonが気づいたように、1から22までの数字と数字が含まれているという事実は、Yこれが人間の染色体の可能なリストであることを示唆しています(これが彼が染色体M(ミトコンドリア)が欠落している可能性があると言った理由です)。

数値リストを並べ替えるには、通常次のようにしますsort -n

$ sort -n -o list.sorted list

listソートされていないリストはどこにあり、list.sorted結果としてソートされたリストになります。

を使用すると、-n入力sortに対して数値ソートが実行されます。ただし、一部の入力は数値ではないため、結果がソートされたリストで最後ではなく最初に表示されるとは予想されない場合がありますX(性染色体は通常22番染色体の後に表示されます)。Y

しかし、「バージョンアライメント」に使用すると、sort -V実際に欲しいものを得ることができます。

$ sort -V -o list.sorted list
$ cat list.sorted
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
X
Y

これを追加しても、最後ではなく以前にMソートされているため、まだ機能しない可能性がありますX(通常はそれが表示される方法だと思います)。

おすすめ記事