numfmt
Что делает команда numfmt в Linux
Команда numfmt в Linux используется для преобразования числовых данных между различными форматами. Она удобна при работе со скриптами, отчетами и логами, где важно читаемое представление чисел. Основная задача команды — конвертация чисел между человеко-читаемыми и машинными форматами, включая байты, килобайты, мегабайты и другие единицы.
Например, когда вы используете утилиту ls -l для отображения размера файлов, данные выводятся в байтах. Чтобы быстро перевести их в килобайты или мегабайты, можно применить команду numfmt в Linux.
Пример:
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.
Пример использования:
numfmt --to=si 2048
Результат:
2.0K
Аналогично, для формата IEC:
numfmt --to=iec 1048576
Результат:
1.0M
Параметр --from
Если нужно преобразовать обратно из человеко-читаемого формата в байты, используется параметр --from.
Пример:
numfmt --from=iec 2K
Результат:
2048
Это особенно полезно в автоматизации, когда скрипту нужно работать с исходными байтовыми значениями.
Параметр --suffix
Параметр --suffix позволяет добавить суффикс к каждому числу. Например, можно обозначить единицы измерения.
Пример:
echo 1024 | numfmt --to=iec --suffix=B
Результат:
1.0KB
Параметр --format
Параметр --format задает формат вывода, используя синтаксис printf. Это удобно, если нужно выровнять числа или задать количество знаков после запятой.
Пример:
numfmt --to=si --format="%.3f" 1536
Результат:
1.536K
Этот вариант полезен при выводе данных в таблицы, где важно сохранить выравнивание.
Параметр --field
Параметр --field позволяет выбрать, какие поля из входной строки преобразовывать. Он особенно удобен при работе с табличными данными, где числа встречаются не в первом столбце.
Пример:
echo "file.txt 2048" | numfmt --to=si --field=2
Результат:
file.txt 2.0K
Примеры использования команды numfmt в Linux
Преобразование размера файлов
Часто команда numfmt в Linux применяется для форматирования данных, полученных от утилит du, df, ls. Например:
df --block-size=1 | numfmt --header --field=2,3,4 --to=iec
Эта команда отобразит размеры разделов в более читаемом виде — вместо больших чисел вы увидите 2G, 512M и т.д.
Преобразование чисел из файлов
Если в файле содержатся числовые значения, команда numfmt в Linux поможет быстро отформатировать их для анализа.
Пример:
cat data.txt | numfmt --to=si
Если файл содержит числа вроде 1000, 5000000, 2000000000, то результатом будет:
1.0K
5.0M
2.0G
Массовое преобразование данных
При генерации отчетов в системах мониторинга или при работе с логами команда numfmt в Linux позволяет быстро конвертировать десятки или сотни числовых значений.
Пример:
cat usage.log | awk '{print $1, $2}' | numfmt --to=iec --field=2
Это делает данные более удобными для восприятия и анализа.
Комбинированные параметры и гибкость numfmt
Команда numfmt в Linux поддерживает комбинацию параметров, что делает её мощным инструментом в арсенале администратора. Например:
du -b * | numfmt --to=iec --suffix=B --field=1 --format="%-10s"
Эта команда:
- конвертирует размеры в читаемый формат,
- добавляет суффикс
B, - выравнивает значения в столбцах.
Таким образом, даже длинные числовые ряды становятся аккуратными и понятными.
Работа с отрицательными числами и нулями
Команда numfmt в Linux корректно обрабатывает нули и отрицательные значения. Например:
echo "-2048 0 1024" | numfmt --to=iec
Результат:
-2.0K
0
1.0K
Это важно при анализе разниц или работе с метриками, где возможны отрицательные значения.
Автоматизация с помощью numfmt
При написании bash-скриптов команда numfmt в Linux часто используется для удобного форматирования вывода.
Пример фрагмента скрипта:
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 легко адаптируется под любые задачи автоматизации.