sort не работает с -h с текстовым файлом - PullRequest
0 голосов
/ 28 мая 2020

В моей ОС я могу найти

-h, --human-numeri c -sort
сравнить удобочитаемые числа (например, 2K 1G)

И у меня есть файл aaa.txt:

2M
5904K
1G

Затем я набираю

sort -h aaa.txt

Выводится

5904K
2M
1G

Это неправильно. Это должно быть

2M
5904K
1G

Вопросы:

  1. Почему sort -h не работает? Результат неверен даже с точки зрения лексикографического порядка. Как отсортировать файл aaa.txt в удобочитаемых числах.
  2. Или может работать только с du -h? Но большинство ответов похоже может работать с awk.
  3. С du -h, sort не нужно указывать, какое поле, например sort -k1h,1? Зачем? Что бы произошло, если бы размер памяти не был указан в первом поле?

1 Ответ

2 голосов
/ 28 мая 2020

Почему sort -h не работает?

Ниже приведен комментарий из исходного кода GNU sort .

/* Compare numbers ending in units with SI xor IEC prefixes
       <none/unknown> < K/k < M < G < T < P < E < Z < Y
   Assume that numbers are properly abbreviated.
   i.e. input will never have both 6000K and 5M.  */

Это не упоминается на странице руководства, но -h не должен работать с вашим вводом.

Как отсортировать файл aaa.txt по числам, читаемым человеком.

Вы можете использовать numfmt для выполнения преобразования Шварца , как показано ниже.

$ numfmt --from=auto < aaa.txt | paste - aaa.txt | sort -n | cut -f2
2M
5904K
1G
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...