私はユニコードsort
コマンドを使用して "直感的な" /自然な方法でアルファベットの文字と数字の文字列をソートしようとしていますが、正しくソートすることはできません。私は、このファイルを持っている:直感的@42EBKAAXX090828:6:10:...
は(10
が100
と102
よりも小さいので)、第二@42EBKAAXX090828:6:100...
であり、第3は@42EBKAAXX090828:6:102:204:1871/2
である第一であるソートでUnixで英数字をソートする方法は?より複雑なようです
$ cat ~/headers
@42EBKAAXX090828:6:100:1699:328/2
@42EBKAAXX090828:6:10:1077:1883/2
@42EBKAAXX090828:6:102:785:808/2
私は英数字でソートしたいのですが、。
ここでは、ライン内の特定の位置をソートすることをお勧めしますが、ここでは:
の位置が変わる可能性があるため、ここでは一般的で実行可能な解決策ではありません。
私が試した:-n
と-u
パラメータの様々な組み合わせで
sort --stable -k1,1 ~/headers > foo
を、それは正しい順序を与えるものではありません。
どのようにすれば、効率的に行うことができますか?sort
を使用しているbashまたはPythonからですか?私はこれを4〜5 GBの丸いファイルに適用したいので、何百万もの行が含まれています。
ありがとうございます!
これは通常、「Natural Sorting」と呼ばれます。 – yak
パフォーマンスについてはわかりませんが、ここではPythonで自然なソートを実装しています:http://stackoverflow.com/q/4836710/331473 –
'@ 42EBKAAXX09082 * 7 *:6:100:1699:328/2 'と' @ 42EBKAAXX09082 * 8 *:6:100:1699:328/2'(強調のための '*')?彼らは同じように並べ替えられていますか? (つまり、3番目のフィールドのみが関連します)、@ JonathanMの答えが最も良いです。そうでなければ鉱山を見てください – tobyodavies