Linux kabuk dosyası ikinci sütuna göre sıralanıyor mu?


Yanıtlar:


157

Bu UNIX ise:

sort -k 2 file.txt

Birden -kfazla sütunda sıralama yapmak için birden çok bayrak kullanabilirsiniz . Örneğin, soyadına göre sıralamak ve ardından bağ bozucu olarak ilk ad vermek için:

sort -k 2,2 -k 1,1 file.txt

"Adam sıralaması" ndan ilgili seçenekler:

-k, --key = POS1 [, POS2]

POS1'de bir anahtar başlatın, POS2'de sonlandırın (başlangıç ​​noktası 1)

POS, F [.C] [OPTS] 'dir, burada F alan numarası ve C alandaki karakter konumudur. OPTS, o anahtar için genel sıralama seçeneklerini geçersiz kılan bir veya daha fazla tek harfli sıralama seçeneğidir. Anahtar verilmemişse, tüm satırı anahtar olarak kullanın.

-t, --field-separator = SEP

boş olmayan geçiş yerine SEP kullanın


2
--field-separator=','"Billy Bob" gibi "First name" için değerler yazan bir veri giriş operatörünüz varsa kullanmak için biraz dikkatli olun veya her neyse ... buna karşı koruma sağlamazsanız boşluklar verilerinize kolayca girebilir, ancak virgül nispeten olası değildir.
Tony Delroy

1
Bu alanlarda "Smith, Jr." gibi büyük olasılıkla virgül vakaları vardır. veya "McDowell, Sr." veya "Dr. John" veya "New York, NY"
jbnunn

2
Sütunlar görsel olarak hizalanmışsa, yani her alan arasında sabit olmayan sayıda boşluk varsa, -bseçeneği kullanmanız gerektiğini unutmayın . Bunun nedeni sort, sıralanacak dizenin sütunun ilk harfinden değil, virgülden hemen sonra başladığını düşünmesidir. Ayrıca, LC_ALL=Cbasit bir ASCII dosyasında bile olabilecek yerel ayardan kaynaklanan herhangi bir yan etkiyi önlemek için komutun önüne koymanız gerekebilir .
calandoa

@calandoa -b( --ignore-leading-blanks) üzerindeki bölüm için teşekkürler . Biraz açıklığa kavuşturmak için: ilk echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2verir a<SPACE><SPACE>b(ikinci sütun birinciden sonra başlar non-blank to blank transitionve <SPACE><SPACE>böncedir <SPACE>a), ancak beklendiği -bgibi verir aa<SPACE>a( aöncedir b).
Kirill Bulygin

7

Yalnızca ikinci alana göre sıralamak için (bu nedenle, ikinci alanların eşleştiği yerlerde, eşleşmeli bu satırlar, diğer alanlarda sıralama yapmadan orijinaldeki sırayla kalır):

sort -k 2,2 -s orig_file > sorted_file

3

FWIW, işte hangi işlemlerin en fazla sanal belleği kullandığını gösteren bir sıralama yöntemi.

memstat | sort -k 1 -t':' -g -r | less

Sıralama seçenekleri, sütun ayırıcı olarak, sayısal sıralama ve ters sırayla sıralama kullanılarak ilk sütuna ayarlanır.


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.