2015-10-01 29 views
7

Bir kabukta sort işlevini kullanırken, yalnızca bir alan aracılığıyla sıralandığında -k seçeneği için tercih edilen sözdizimi gibi görünüyor, örneğin -k5n,5. Bu durumda ,5'un avantajı nedir? -k5n aynı şekilde çalışıyor, ya da en azından benim için görünüyor.'sort' çekirdek kullanımının anahtarının (-k) sözdiziminin ardında yatan sebepler

Refs:

  1. The man page seems to prefer this but also suggests it is optional
  2. This answer seems to prefer this syntax too
+0

-k 3g'nin çalışmadığı bazı sorunlar yaşadım. Sadece '-k 3g, 3' hile yaptı. – RedX

+0

@RedX ve nedenini biliyor musun? – Michael

+1

Asla problemi anlamadım, ama '' 5' sonu olmadan bazen yanlış (beklenmedik) sonuçlar aldım. O zamandan beri 'virgül sözdizimi' kullanma. – liborm

cevap

2

Verileriniz N alanlarına sahip olduğunu varsayalım. -k5n, -k5,Nn'a eşdeğerdir, yani veriler, alanlar olarak 5 ile N arasındaki alanlar kullanılarak sıralanır. Örneğin, 5. alan için eşit değerlerle girdideki kayıtların göreceli sırasını değiştirmeyen kararlı bir sıralama istiyorsanız, bu istenmeyebilir. -k5,5n'u kullanarak, 5. alanı tek başına sıralamak istediğinizi açıkça belirtir.

+0

Bunun için bir test durumu sunabilir misiniz? Bunu denedim ve ne fark yarattığını anlayamadım ... Rastgele görünüyor. Aşağıdaki test varable kullanıyorum: 'k =" bir iki 1 7 bir iki \ n bir iki 2 5 bir iki \ n bir iki 1 6 bir iki \ n bir iki 3 3 bir iki \ n bir iki 4 1 bir iki n RedX

+0

'-k5', zaten sadece bir alanla sıralamak istediğinizde oldukça açık değil midir? Bunun potansiyel olarak anlamı başka bir şey yok değil mi? Bir aralıktaki bir dizi bitişik alanın sıralanması, bir veya daha fazla '-kN' ifadesinin kullanılmasından çok daha nadir görülüyor gibi görünüyor. Daha sık görülen durumların sözdizimi, bir yan durum tarafından dikte ediliyormuş gibi geliyor, bu da mantıksız gibi görünüyor. bu mantıklı mı? – Michael

+0

@Michael Eğer -k5' -k5, N' yerine -k5,5' ile eşdeğer olsa hoş olurdu, ama öyle değil. – chepner

0

ikinci anahtar durma konumunu belirtir hattının sonuna olan varsayılan.

Dolayısıyla, bunu çıkartabilirsiniz ve çoğu zaman pratik bir fark yaratmaz, ancak, örneğin, benzersiz anahtar eşleşmelerine sahip satırları çıktılamak için -u seçeneğini kullanmış olmanız önemli olabilir.

Ayrıca, birden çok anahtar parçasını birden çok -k seçenekleri ile belirtebilirsiniz, bu durumda, anahtar bölümünün bitiş noktasını belirtmeniz gerekir.

Muhtemelen önemli olduğu başka durumlar da vardır.

İlgili konular