混在したテキストと数字(ホスト名など)を並べ替えるには?

混在したテキストと数字(ホスト名など)を並べ替えるには?

テキストと数字の混合入力がある場合(前に0がつかない)、「自然な」順序で並べ替えるにはどうすればよいですか?たとえば、次の入力(ホスト名)が与えられた場合:

whatever-1.example.org
whatever-10.example.org
whatever-11.example.org
whatever-12.example.org
whatever-13.example.org
whatever-2.example.org
whatever-3.example.org
whatever-4.example.org
whatever-5.example.org
whatever-6.example.org
whatever-7.example.org
whatever-8.example.org
whatever-9.example.org

私は次のような出力が欲しい。

whatever-1.example.org
whatever-2.example.org
whatever-3.example.org
whatever-4.example.org
whatever-5.example.org
whatever-6.example.org
whatever-7.example.org
whatever-8.example.org
whatever-9.example.org
whatever-10.example.org
whatever-11.example.org
whatever-12.example.org
whatever-13.example.org

編集する

「何でも」に加えて

thingaroo-#.example.org
      .
      :

blargh-#.example.org
      .
      :

...etc...

ありがとうございます!

ベストアンサー1

GNU coreutils ≥ 7.0 の場合、バージョン順序付けを使用できます。一連の数字が 10 進整数値でソートされる点を除いて、これは辞書式の順序です。

sort -V

おすすめ記事