Saya mencoba mengurutkan serangkaian huruf dan angka secara alfanumerik dengan cara "intuitif"/alami menggunakan perintah unix sort
, tetapi tidak dapat mengurutkannya dengan benar. Saya punya file ini:
$ cat ~/headers
@42EBKAAXX090828:6:100:1699:328/2
@42EBKAAXX090828:6:10:1077:1883/2
@42EBKAAXX090828:6:102:785:808/2
Saya ingin mengurutkannya secara alfanumerik, yang secara intuitif @42EBKAAXX090828:6:10:...
adalah yang pertama (karena 10
lebih kecil dari 100
dan 102
), yang kedua adalah @42EBKAAXX090828:6:100...
dan yang ketiga adalah @42EBKAAXX090828:6:102:204:1871/2
.
Saya tahu bahwa menyarankan pengurutan pada posisi tertentu dalam garis, tetapi posisi :
di sini dapat bervariasi sehingga ini bukan solusi umum dan bisa diterapkan di sini.
Saya mencoba:
sort --stable -k1,1 ~/headers > foo
dengan berbagai kombinasi parameter -n
dan -u
tetapi tidak memberikan urutan yang benar.
Bagaimana ini bisa dilakukan secara efisien, baik dari bash menggunakan sort
atau dari Python? Saya ingin menerapkan ini pada file yang berukuran sekitar 4-5 GB, sehingga berisi jutaan baris.
Terima kasih!
@42EBKAAXX09082*7*:6:100:1699:328/2
dan@42EBKAAXX09082*8*:6:100:1699:328/2
(*
s untuk penekanan)? apakah mereka diurutkan sama? (yaitu hanya bidang ke-3 yang relevan) maka jawaban @JonathanM adalah yang terbaik. Kalau tidak, lihat milikku - person tobyodavies   schedule 06.12.2011