Jawaban:
Anda perlu memberi tahu sort -n
untuk menyortir bagian setelah =
:
sort -t = -k 2n
-k2n
? Apakah itu terkait dengan pengurutan angka? Terima kasih.
-k
mendefinisikan kunci pengurutan. Lihat halaman manual untuk detailnya. -k2n
mendefinisikan kunci pengurutan mulai dari bidang kedua dan berakhir di akhir baris dan menjadikannya kunci pengurutan angka.
gunakan sortir:
sort -n file1 > file2
-n, --numeric-sort
membandingkan menurut nilai numerik string
sort -g file1 > file 2
-g, --general-numeric-sort
sort -n
karena mereka tidak memulai dengan angka. Alasannya memilah mereka adalah jenis garis penuh resor-terakhir (leksikal, tidak numerik) dilakukan untuk baris dengan peringkat yang sama. Itu akan menyortir "$lvl=17"
sebelumnya "$lvl=2"
.
-n
dan -g
berlebihan di sini karena input tidak numerik. Jadi jawaban ini menyesatkan, maka downvote (perhatikan juga -g
dan opsi panjangnya khusus untuk GNU).
-n
adalah bahwa itu tidak terbatas pada bilangan bulat desimal. Itu masih akan disortir "$lvl=17"
sebelumnya "$lvl=2"
sebagai bagian dari penyortiran resor terakhir.
Saya menemukan bahwa, Anda jalankan saja sort -h
, itu akan berhasil. Mereka menyebutnya --human-numberic-sort
.
sort -h file1 > file2
sort -n
adalah apa yang ingin Anda gunakan. Ini semacam kita mengurutkan angka.sort -k 2 -n file1
sort
pada File1 Anda, tanpa opsi, saya mendapatkan File2 Anda. Apa yang kamu lakukan secara berbeda? Apa yang Anda tinggalkan dari pertanyaan ini?