Sıralama neden aynı sıralama tuşlarıyla satırların sırasını değiştiriyor?


31

İşte veriler:

D 2
B 2
A 2

Bu komutu çalıştırdığımda:

sort -k2,2 file

çıktı:

A 2
B 2
D 2

Sorum şu ki, sadece ikinci sütunu belirttiğimde -k2,2, neden ilk sütuna göre de sıralıyor? İkinci sütunun tüm değerleri aynı olduğundan, onu olduğu gibi bırakmalıdır.


7
[Semi-OT]: FYI, sıralama tuşlarını eşleştiğinde giriş sırasını koruyan bir sıralama, bilgisayar bilimlerinde kararlı sıralama olarak bilinir . Çoğu zaman, türler kararlı değildir, çünkü birçok kararlı olmayan sıralama algoritması daha hızlı veya basittir. Buradaki durum değil, ancak CS terimini bilmek manpage belgelerini -sanlaşılabilir ve uygulanabilir bir seçenek haline getirir .
derobert

Yanıtlar:


34

Bu son çare karşılaştırma . İki satır karşılaştırılırken, tüm anahtarlar eşitse karşılaştırılırsa, son çare olarak, tüm satırların temel bir dize karşılaştırması gerçekleştirilir ( -ryine de geçerlidir ancak diğer seçenekler değil). Bu davranış POSIX tarafından belirtilir :

-U seçeneği belirtilmediği sürece, aksi takdirde eşit olan satırlar, -d, -f, -i, -n veya -k seçeneklerinin hiçbiri bulunmamış gibi sıralanır (ancak -r hala etkinse, belirtildi) ve satırlardaki tüm baytlar karşılaştırma için önemli Hala karşılaştırılan satırların eşit olarak sıralanma sırası yazılmıştır.

GNU sortile bu son başvuru karşılaştırması -s( kararlı için ) seçeneğiyle devre dışı bırakılabilir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.