команда сортування в unix з числовим сортуванням


10

У мене є файл1:

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

Файл2 я хочу:

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

В основному число файлів1.


Коли я запускаю звичайний Unix sortу вашому File1, без варіантів, я отримую ваш File2. Що ти робиш по-іншому? Що ви залишаєте без цього питання?
Скотт,

Відповіді:


17

Мені подобається -V --version-sort: він дуже добре поводиться у багатьох ситуаціях, змішуючи рядки та числа

sort -V

Я дуже часто використовую цей варіант ...

У деякому напрямку ls -vдля сортування версій ls.


10

Вам потрібно сказати sort -nсортувати за деталлю після =:

sort -t = -k 2n

Я нещодавно шукав це ^^. Але ще один питання: Що робити -k2n? Це стосується числового сортування? Дякую тобі.
αғsnιη

2
@KasiyA -kвизначає ключ сортування. Детальну інформацію див. На сторінці чоловіка. -k2nвизначає ключ сортування, починаючи з другого поля і закінчуючи в кінці рядка, і робить його числовим ключем сортування.
Стефан Шазелас

0

використовувати сортування:

sort -n file1 > file2

-n, -
числове порівняння порівняння відповідно до числового значення рядка

 sort -g file1 > file 2

-g, - загально-числовий-роду


3
Ні, всі ці рядки мають однаковий рейтинг, sort -nоскільки вони не починаються з числа. Причина їх сортування - це повний рядок повного рядка (лексично, а не чисельно), зроблений для рядків з однаковим ранжуванням. Це б сортувати "$lvl=17"раніше "$lvl=2".
Stéphane Chazelas

@ StéphaneChazelas дякую за те, що вказали.
Хакаголік

Якщо перефразовувати, -nі -gтут зайві, оскільки вхід не є числовим. Тож ця відповідь вводить в оману, звідси і зворотний результат (також зауважте, що -gі довгі варіанти є специфічними для GNU).
Стефан Шазелас

але -g хороший загально-числовий-сорт
хакаголік

Це все ще для сортування числових значень, різниця в -nтому, що це не обмежується десятковими цілими числами. Це все одно було б сортувати "$lvl=17"раніше, "$lvl=2"як частину останнього сортування.
Stéphane Chazelas

0

Я виявив, що ви просто запустіть sort -h, це спрацює. Вони це називають --human-numberic-sort.

sort -h file1 > file2

-1

sort -nце те, що ви хочете використовувати. Він сортує, коли ми сортуємо числа.sort -k 2 -n file1


2
Але ОП хоче сортувати у порядку зростання, що є замовчуванням. Чому ви пропонуєте зворотний порядок?
G-Man каже: "Відновіть Моніку"

вище вказане правильно, коли поля розділені вкладками чи пробілами і не працюватимуть у випадку ОП.
αғsnιη
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.