Mam plik1:
"$lvl=57" "$lvl=20" "$lvl=48" "$lvl=17" "$lvl=58"
Plik2 I chcesz:
"$lvl=17" "$lvl=20" "$lvl=48" "$lvl=57" "$lvl=58"
Zasadniczo sortowanie numeryczne pliku1.
Komentarze
Odpowiedź
Podoba mi się -V –version-sort: zachowuje się bardzo dobrze w wielu sytuacjach podczas mieszania ciągów i liczb
sort -V
Bardzo często używam tej opcji …
W pewnym kierunku , ls -v
for version-sort ls
.
Odpowiedź
Musisz powiedzieć sort -n
, aby posortował część po =
:
sort -t = -k 2n
Komentarze
- Ostatnio tego szukałem ^^. Ale jeszcze jedno P. Co zrobić
-k2n
? Czy to ma związek z sortowaniem numerycznym? dziękuję. - @KasiyA
-k
definiuje klucz sortowania. Zobacz stronę podręcznika po szczegóły.-k2n
definiuje klucz sortowania rozpoczynający się w drugim polu i kończący na końcu wiersza i czyni go liczbowym kluczem sortowania.
Odpowiedz
Okazało się, że po prostu uruchomiłeś sort -h
, to zadziała. Nazywają to --human-numberic-sort
.
sort -h file1 > file2
Odpowiedź
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, –general-numeric-sort
Komentarze
- Nie, wszystkie te linie mają ten sam ranking z
sort -n
, ponieważ nie ' nie zaczynają się od liczby. Powodem, dla którego je sortuje, jest sortowanie pełnowierszowe w ostateczności (leksykalnie, a nie numerycznie) wykonane dla wierszy o tym samym rankingu. To posortowałoby"$lvl=17"
przed"$lvl=2"
. - @St é phaneChazelas dzięki za wskazanie.
- Parafrazując,
-n
i-g
są tutaj zbędne, ponieważ dane wejściowe nie są numeryczne . Tak więc ta odpowiedź jest myląca, stąd głos przeciw (zwróć też uwagę, że-g
i długie opcje są specyficzne dla GNU). - ale -g jest dobre ogólne-numeryczne- sort
- To, że ' nadal służy do sortowania wartości liczbowych, różnica z
-n
polega na tym, że s nie ogranicza się do dziesiętnych liczb całkowitych. To nadal posortowałoby"$lvl=17"
przed"$lvl=2"
jako część sortowania w ostatniej instancji.
Odpowiedź
sort -n
jest tym, czego chcesz użyć. Sortuje tak, jak sortujemy liczby. sort -k 2 -n file1
Komentarze
- Ale operator operacyjny chce sortować w kolejności rosnącej, która jest domyślna. Dlaczego sugerujesz odwrotną kolejność?
- powyższe jest poprawne, gdy pola są oddzielone tabulatorami lub spacjami i nie będą działać w OP s.
sort
na Twoim File1, bez żadnych opcji, otrzymuję Twój File2. Co robisz inaczej? Co pomijasz w tym pytaniu?