Yanıtlar:
Bir kerede (birden çok) sütun sıralamak için sort
's -k
seçeneğini kullanın :
$ sort -k1,1 -k2n input
A 1-2
A 3-4
A 6-8
B 5-9
B 7-10
-k1,1
önce ilk sütuna göre, ardından -k2n
ilk sütun bağlandığında ikinci olarak sayısal olarak sıralar, böylece çıktınızı istediğiniz sıraya göre alırsınız: yalnızca ilk sütun öğesi aynıysa, ikinci sütunun ilk öğesine göre sıralama.
Sayısal olarak sıralarken, yalnızca sayı olmayı bırakana kadar alanı inceler, böylece size yalnızca ilk öğesinin karşılaştırmasını verir.
İki anahtar aynı olduğunda, sort
tam satırları son çare karşılaştırması olarak lexik olarak karşılaştırır. Mesela A 1-10
vs A 1-2
birinci anahtarları aynıdır (vardır A
dize) ve de (her ikisi de sayısı olarak kabul edilir, ikinci anahtar 1
), böylece daha sonra sort
karşılaştırır A 1-10
vs A 1-2
lexically ve ikinci olarak daha büyük olduğu 2
sonra sıralar 1
. GNU uygulaması sort
bir sahiptir -V
seçeneği veya V
bir gerçekleştirmek için anahtar bayrak sürümü böylece, dizgeler sayısal olarak karşılaştırılır içinde ondalık basamak olduğu dizilerin dışında bir sözcük karşılaştırma gibi olan tür, sort -k1,1 -k2V
olur sıralama A 1-10
sonra A 1-2
çünkü 10
daha büyük bir sayı olduğu gibi 2
.
¹ teknik olarak, -k2
çizginin ikinci alandan başlayarak (boş olmayandan boşluğa ilk geçişten sonra) ve satırın sonunda biten, ancak sadece önde gelen kısma n
eşdeğer olan bayrak -k2,2n
kısmı anlamına gelir. sayıyı oluşturan sayılır.