polecenie sortowania w unixie z sortowaniem numerycznym


10

Mam plik 1:

"$lvl=57"
"$lvl=20"
"$lvl=48"
"$lvl=17"
"$lvl=58"

File2 Chcę:

"$lvl=17"
"$lvl=20"
"$lvl=48"
"$lvl=57"
"$lvl=58"

Zasadniczo numerycznie sortuj plik 1.


Kiedy uruchamiam zwykły Unix sortna twoim File1, bez żadnych opcji, otrzymuję twój File2. Co robisz inaczej? Co pozostawiasz poza tym pytaniem?
Scott,

Odpowiedzi:


17

Lubię -V --version-sort: zachowuje się bardzo dobrze w wielu sytuacjach, mieszając ciągi znaków i liczby

sort -V

Bardzo często korzystam z tej opcji ...

W pewnym kierunku, ls -vdo sortowania według wersji ls.


10

Musisz powiedzieć, sort -naby posortować według części po =:

sort -t = -k 2n

Ostatnio szukałem tego ^^. Ale jeszcze jedno pytanie. Co zrobić -k2n? Czy to dotyczy sortowania numerycznego? Dziękuję Ci.
αғsнιη

2
@KasiyA -kdefiniuje klucz sortowania. Szczegółowe informacje można znaleźć na stronie podręcznika man. -k2ndefiniuje klucz sortowania zaczynający się od drugiego pola i kończący się na końcu linii i czyni go kluczem numerycznym.
Stéphane Chazelas

0

użyj sortowania:

sort -n file1 > file2

-n, --numeric-sort
porównaj według wartości liczbowej ciągu

 sort -g file1 > file 2

-g, - ogólne-sortowanie numeryczne


3
Nie, wszystkie te linie mają ten sam ranking, sort -nponieważ nie zaczynają się od liczby. Powodem, dla którego je sortuje, jest ostateczne sortowanie ostateczne (leksykalnie, nie numerycznie) dla linii o tym samym rankingu. To by się "$lvl=17"kiedyś ułożyło "$lvl=2".
Stéphane Chazelas

@ StéphaneChazelas dzięki za wskazanie.
Hackaholic

Parafrazując -ni -gsą tutaj zbędne, ponieważ dane wejściowe nie są liczbowe. Ta odpowiedź jest myląca, stąd opinia negatywna (zauważ również, że -gi długie opcje są specyficzne dla GNU).
Stéphane Chazelas

ale -g jest dobrym ogólnym sortowaniem numerycznym
Hackaholic

To wciąż do sortowania wartości liczbowych, z tą różnicą -n, że nie ogranicza się do liczb całkowitych dziesiętnych. Że nadal sortować "$lvl=17"przed "$lvl=2"jako część ostatniej instancji sortowania.
Stéphane Chazelas

0

Odkryłem, że po prostu biegniesz sort -h, to zadziała. Nazywają to --human-numberic-sort.

sort -h file1 > file2

-1

sort -nto jest to, czego chcesz użyć. Sortuje się, gdy sortujemy liczby.sort -k 2 -n file1


2
Ale OP chce sortować w porządku rosnącym, co jest ustawieniem domyślnym. Dlaczego sugerujesz odwrotną kolejność?
G-Man mówi „Reinstate Monica”

powyższe jest prawidłowe, gdy pola są oddzielone tabulatorami lub spacjami i nie będą działać w przypadku OP.
αғsнιη
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.