Сегодня мы обсудим интересную и довольно неизвестную команду под названием «Numfmt», которая преобразует число в/из удобочитаемого формата. Она считывает числа в различных представлениях и форматирует их в удобочитаемом формате в соответствии с заданными параметрами. Если номера не дали, он считывает числа из стандартного ввода. Она является частью пакета GNU Coreutils, так что вам не нужно беспокоиться об его установки. В этом кратком руководстве мы рассмотрим использование команды Numfmt с некоторыми практическими примерами.
Команда Numfmt с примерами
Изобразите комплексное число, например «1003040500» . Здесь команды Numfmt приходит в помощь. Выполните следующую команду, чтобы преобразовать данные в читабельной форме.
$ numfmt --to=si 1003040500 1.1G
Придумаем некоторое очень долгое и комплексное число, по сравнению с предыдущим номером. Как насчет «10090008000700060005»? Биты трудны, не так ли? Да. Но команда Numfmt покажет удобочитаемый формат этого числа мгновенно.
$ numfmt --to=si 10090008000700060005 11E
Здесь si ссылается на международную систему единиц (сокращенно SI от Systeme Internationale, французский вариант названия).
Таким образом, если вы используете si, команда numfmt будет автоматически масштабировать номер в соответствии со стандартом Международной системой единиц (СИ).
Numfmt также использует следующие параметры тоже.
- iec и iec -i – Автоматический масштаб номера в соответствии со стандартом Международной электротехнической комиссии (IEC).
- auto – С помощью этого метода, Суффиксы ‘K’,‘M’,‘G’,‘T’,‘P’,‘E’,‘Z’,‘Y’ интерпретируются как SI значения, и Суффиксы ‘Ki’, ‘Mi’,‘Gi’,‘Ti’,‘Pi’,‘Ei’,‘Zi’,‘Yi’ интерпретируются как IEC значений.
- none – не автоматическое масштабирование.
Вот еще несколько примеров для приведенных выше вариантов.
$ numfmt --to=iec 10090008000700060005 8.8E
$ numfmt --to=iec-i 10090008000700060005 8.8Ei
Мы уже видели, как преобразовать число в удобочитаемый формат. Теперь давайте сделаем наоборот. Т.е. мы будем преобразовывать числа из удобочитаемого формата. Для этого просто заменить «-to» с опцией «-from», как показано ниже.
$ numfmt --from=si 1G 1000000000
$ numfmt --from=si 1M 1000000
$ numfmt --from=si 1P 1000000000000000
Мы также можем сделать это со стандартами iec и iec-i.
$ numfmt --from=iec 1G 1073741824
$ numfmt --from=iec-i 1Gi 1073741824
$ numfmt --from=auto 1G 1000000000
$ numfmt --from=auto 1Gi 1073741824
Как я уже говорил, при использовании «auto», Суффиксы ‘K’,‘M’,‘G’,‘T’,‘P’,‘E’,‘Z’,‘Y’ интерпретируются как SI значения, и Суффиксы ‘Ki’, ‘Mi’,‘Gi’,‘Ti’,‘Pi’,‘Ei’,‘Zi’,‘Yi’ интерпретируются как IEC значений.
Команда Numfmt также может быть использована в сочетании с другими командами. Посмотрите на следующие примеры.
$ echo 1G | numfmt --from=si 1000000000
$ echo 1G | numfmt --from=iec 1073741824
$ df -B1 | numfmt --header --field 2-4 --to=si
$ ls -l | numfmt --header --field 5 --to=si
Пожалуйста, обратите внимание, на то что в командах ls и df уже есть «-человеческий читаемый» вариант для отображения результатов в читабельной форме. Приведенные выше примеры приведены только лишь в демонстрационных целях.
Вы можете настроить вывод с помощью вариантов «-format» или «-padding».
5 символов, выравнивание по правому краю, используя опцию «-format»:
$ du -s * | numfmt --to=si --format="%5f"
5 символов, выравнивание по левому краю, используя опцию «-format»:
$ du -s * | numfmt --to=si --format="%-5f"
5 символов, выравнивание по правому краю, используя опцию «-padding»:
$ du -s * | numfmt --to=si --padding=5
5 символов, выравнивание по левому краю, используя опцию «-padding»:
$ du -s * | numfmt --to=si --padding=-5
Для получения дополнительных возможностей и использования, смотрите man page.
$ man numfmt
Это все на данный момент. Оставайтесь с нами!