`Sort` kullanarak sayısal bir Dize sıralama


0

sortKılavuzu okudum ama bir şeyleri kaçırdığımı hissediyorum.

Kaynak dosyası

Sıralamaya çalıştığım CSV dosyası:

$ cat SAMPLE.CSV 
compid,active,tagno
-2147483646,1,"1"
-2147483645,0,"10000"
-2147483644,0,"1002"
-2147483127,1,"76245.1"
-2147483126,1,"76245.2"
-2147468087,1,"76245"

İstenen sonuç

Sütun olarak da bilinen üçüncü (son) sütuna göre sıralamaya çalışıyorum tagno. İstenilen sonuç şöyle görünmelidir:

compid,active,tagno
-2147483646,1,"1"
-2147483644,0,"1002"
-2147483645,0,"10000"
-2147468087,1,"76245"
-2147483127,1,"76245.1"
-2147483126,1,"76245.2"

Boşuna Girişimler

Tüm hesaplara göre, aşağıdaki komut tam olarak istediklerimi yapmalıdır:

$ sort SAMPLE.CSV -n -k 3 -t ','
-2147468087,1,"76245"
-2147483126,1,"76245.2"
-2147483127,1,"76245.1"
-2147483644,0,"1002"
-2147483645,0,"10000"
-2147483646,1,"1"
compid,active,tagno

"General-numeric-sort" seçeneğiyle bile denedim:

$ sort SAMPLE.CSV -g -k 3 -t ','
-2147468087,1,"76245"
-2147483126,1,"76245.2"
-2147483127,1,"76245.1"
-2147483644,0,"1002"
-2147483645,0,"10000"
-2147483646,1,"1"
compid,active,tagno

Bunu ilk defa kullanıyorum, sortsanırım burada temel bir şeyleri özlüyorum

sort versiyon

$ sort --version
2.3-Apple (99)

Yardım lütfen?


Bu yardımcı olur mu? stackoverflow.com/questions/9471101/… ve orada kabul edilen cevap hakkındaki yorumları görün.
18'de barlop

@ barlop İşaretçi için teşekkürler ama bunu taradım ve hala çözemiyorum.
Joshua Pinter

Yanıtlar:


1

Varsayılan alan ayırıcı, sortboş geçişten boş değil. Burada farklı bir ayırıcıya ihtiyacınız var: bir çift alıntı.

sort -t'"' -k2n SAMPLE.CSV

Daha sonra 2. sütuna göre sıralama yapıyorsunuz. Neyse ki, ikinci sütun başlık satırında boş, bu yüzden önce gelir.


Her şeyden önce sen bir dahisin. İkincisi, wat? Gibi alan ayırıcı olarak virgül belirtmek zorunda olacağını düşündüm -t ','?
Joshua Pinter

Sayı bir rakam (veya - veya.) İle başlamalı, çift tırnak işareti içermemelidir, bu nedenle virgül burada yardımcı olmaz.
choroba

Anladım. Takip eden bir sorum var. Komutunuz, rakamları tuhaf bir şekilde, içinde olduğu gibi tuhaf bir şekilde sıralamaktır: -2147466194,1,"1361B.2"\n -2147466195,1,"1361B.1"\n -2147466196,1,"1361B"Bunları nasıl düzeltebiliriz? (netlik için, bunu asıl soruya düzenleme olarak atıyorum)
Joshua Pinter

Lütfen yapma Yeni bir soru sormak için yeni bir soru oluşturun.
Choroba

Haklısın. Başka bir soru yarattım ve burada kendime cevap verdim: superuser.com/questions/1307618/… Yardımınız için tekrar teşekkürler!
Joshua Pinter
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.