Misalkan saya punya file ini
b 10 foo
a 10 bar
a 2 bar
Saya ingin mengurutkan berdasarkan kolom ketiga, berdasarkan abjad. Dalam hal ikatan, saya ingin mengurutkan berdasarkan kolom kedua, secara numerik. Di halaman manual untuk program sortir unix Anda menemukan ini:
> sort -k3 -k2n a
Pemberian yang mana
a 2 bar
a 10 bar
b 10 foo
Yang mana yang benar.
Sekarang, apa yang sebenarnya saya inginkan, adalah mengurutkan berdasarkan kolom pertama, berdasarkan abjad, dan jika ada ikatan, dengan kolom kedua, secara numerik. Adakah yang bisa menjelaskan mengapa
> sort -k1 -k2n a
Memberi
a 10 bar
a 2 bar
b 10 foo
Mana yang salah?
Jawaban:
Alasan contoh Anda tidak berfungsi seperti yang Anda harapkan adalah itu
sort
mempertimbangkan semua posisi setelah yang ditentukan juga. Dalam contoh Anda, jenis kamus dari-k1
macam stringa 10 bar
sebeluma 2 bar
, dan Anda tidak perlu istirahat.Anda perlu secara eksplisit menentukan batas kunci pengurutan, seperti yang dijelaskan dalam halaman manual:
Contoh:
sumber