numfmt

Что делает команда numfmt в Linux

Команда numfmt в Linux используется для преобразования числовых данных между различными форматами. Она удобна при работе со скриптами, отчетами и логами, где важно читаемое представление чисел. Основная задача команды — конвертация чисел между человеко-читаемыми и машинными форматами, включая байты, килобайты, мегабайты и другие единицы.

Например, когда вы используете утилиту ls -l для отображения размера файлов, данные выводятся в байтах. Чтобы быстро перевести их в килобайты или мегабайты, можно применить команду numfmt в Linux.

Пример:

Bash
ls -l | awk '{print $5}' | numfmt --to=iec

Результат покажет размеры файлов в привычном формате (например, 1K, 2M, 3G).

Основные параметры команды numfmt

Параметр --to

Параметр --to определяет, в какой формат нужно преобразовать числа.
Доступные значения:

  • none — без преобразования;
  • si — формат SI (например, 1K = 1000);
  • iec — формат IEC (например, 1K = 1024);
  • iec-i — формат IEC с суффиксом KiB, MiB, GiB.

Пример использования:

Bash
numfmt --to=si 2048

Результат:

Bash
2.0K

Аналогично, для формата IEC:

Bash
numfmt --to=iec 1048576

Результат:

Bash
1.0M

Параметр --from

Если нужно преобразовать обратно из человеко-читаемого формата в байты, используется параметр --from.

Пример:

Bash
numfmt --from=iec 2K

Результат:

Bash
2048

Это особенно полезно в автоматизации, когда скрипту нужно работать с исходными байтовыми значениями.

Параметр --suffix

Параметр --suffix позволяет добавить суффикс к каждому числу. Например, можно обозначить единицы измерения.

Пример:

Bash
echo 1024 | numfmt --to=iec --suffix=B

Результат:

Bash
1.0KB
Совет: используйте этот параметр для улучшения читаемости вывода при генерации отчетов или логов.

Параметр --format

Параметр --format задает формат вывода, используя синтаксис printf. Это удобно, если нужно выровнять числа или задать количество знаков после запятой.

Пример:

Bash
numfmt --to=si --format="%.3f" 1536

Результат:

Bash
1.536K

Этот вариант полезен при выводе данных в таблицы, где важно сохранить выравнивание.

Параметр --field

Параметр --field позволяет выбрать, какие поля из входной строки преобразовывать. Он особенно удобен при работе с табличными данными, где числа встречаются не в первом столбце.

Пример:

Bash
echo "file.txt 2048" | numfmt --to=si --field=2

Результат:

Bash
file.txt 2.0K
Совет: при работе с большими CSV-файлами этот параметр помогает избежать ненужного преобразования текстовых столбцов.

Примеры использования команды numfmt в Linux

Преобразование размера файлов

Часто команда numfmt в Linux применяется для форматирования данных, полученных от утилит du, df, ls. Например:

Bash
df --block-size=1 | numfmt --header --field=2,3,4 --to=iec

Эта команда отобразит размеры разделов в более читаемом виде — вместо больших чисел вы увидите 2G, 512M и т.д.

Преобразование чисел из файлов

Если в файле содержатся числовые значения, команда numfmt в Linux поможет быстро отформатировать их для анализа.

Пример:

Bash
cat data.txt | numfmt --to=si

Если файл содержит числа вроде 1000, 5000000, 2000000000, то результатом будет:

Bash
1.0K
5.0M
2.0G

Массовое преобразование данных

При генерации отчетов в системах мониторинга или при работе с логами команда numfmt в Linux позволяет быстро конвертировать десятки или сотни числовых значений.

Пример:

Bash
cat usage.log | awk '{print $1, $2}' | numfmt --to=iec --field=2

Это делает данные более удобными для восприятия и анализа.

Комбинированные параметры и гибкость numfmt

Команда numfmt в Linux поддерживает комбинацию параметров, что делает её мощным инструментом в арсенале администратора. Например:

Bash
du -b * | numfmt --to=iec --suffix=B --field=1 --format="%-10s"

Эта команда:

  • конвертирует размеры в читаемый формат,
  • добавляет суффикс B,
  • выравнивает значения в столбцах.

Таким образом, даже длинные числовые ряды становятся аккуратными и понятными.

Работа с отрицательными числами и нулями

Команда numfmt в Linux корректно обрабатывает нули и отрицательные значения. Например:

Bash
echo "-2048 0 1024" | numfmt --to=iec

Результат:

Bash
-2.0K
0
1.0K

Это важно при анализе разниц или работе с метриками, где возможны отрицательные значения.

Автоматизация с помощью numfmt

При написании bash-скриптов команда numfmt в Linux часто используется для удобного форматирования вывода.

Пример фрагмента скрипта:

Bash
BYTES=$(du -b file.txt | awk '{print $1}')
HUMAN=$(numfmt --to=iec $BYTES)
echo "Размер файла: $HUMAN"

Такой подход позволяет сделать вывод более понятным для пользователя.

Дополнительные советы

Если вы часто работаете с системными утилитами (du, df, ls), настройте алиасы, чтобы автоматически применять команду numfmt в Linux для форматирования данных.
Для повышения читаемости используйте сочетание --to=iec и --suffix=B, чтобы явно указывать единицы измерения и избегать путаницы.

Команда numfmt в Linux — это мощный инструмент для удобного и гибкого форматирования чисел. Она значительно облегчает анализ и визуализацию данных, особенно при работе с файлами, логами и отчетами. Благодаря множеству параметров, таких как --to, --from, --field и --format, numfmt легко адаптируется под любые задачи автоматизации.