Bunun gibi bir dosyam var:
FirstName, FamilyName, Address, PhoneNumber
Bunu AileAdı'na göre nasıl sıralayabilirim?
Bunun gibi bir dosyam var:
FirstName, FamilyName, Address, PhoneNumber
Bunu AileAdı'na göre nasıl sıralayabilirim?
Yanıtlar:
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
--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.
-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 .
-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).
sort -nk2 file.txt
Buna göre sütun numarasını değiştirebilirsiniz.