Saya tahu bahwa opsi -k untuk jenis Unix memungkinkan kami untuk mengurutkan berdasarkan kolom tertentu dan semua berikut ini . Misalnya, diberikan file input:
2 3
2 2
1 2
2 1
1 1
Dengan menggunakan sort -n -k 1
, saya mendapatkan output yang diurutkan berdasarkan kolom 1 dan kemudian oleh 2:
1 1
1 2
2 1
2 2
2 3
Namun, saya ingin tetap memesan kolom ke-2, seperti ini:
1 2
1 1
2 3
2 2
2 1
Apakah ini mungkin dengan sort
perintah?
join
adalah input diurutkan pada bidang yang Anda ikuti . Jadi yakin, output ini diurutkan pada bidang pertama, dan Anda dapat bergabung di sana.-k 1,1
(" 1 ") tidak berfungsi lebih baik untuk saya. Apa yang berhasil adalah-s -k 1
, dengan-n
jika Anda membutuhkannya.Untuk hanya mengurutkan pada kolom pertama yang harus Anda lakukan:
Dari Buku Pegangan Administrasi Sistem Unix dan Linux
sumber
-s
opsi seperti yang ditunjukkan Cascabel.-s
mengatakan "Opsi ini mempertahankan urutan rekaman asli dari catatan yang memiliki kunci yang sama."Tidak satu pun dari jawaban yang diberikan bekerja secara umum untuk saya.
Keduanya
sort -s -k 2 file1
dansort -n -k1,1
lakukan pengurutan tambahan dengan file ini:Saya hanya harus melakukan hal yang tepat ini dan akhirnya menggunakan lingkaran shell. Solusi ini mungkin tidak berfungsi dengan baik pada file yang sangat besar karena seluruh file perlu dibaca untuk setiap nilai unik di kolom diurutkan.
Di sini file diurutkan pada kolom 2 saja.
sumber
sort -s -k2,2 file1