Запись форматированных выходных данных (POSIX)
printf формат [аргумент...]
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита printf записывает в стандартный поток вывода аргументы, отформатированные с помощью управляющей строки формат (синтаксис строки формат основан на функции printf()).
Управляющая строка формат содержит символы следующих типов:
Спецификация преобразования вводится символом %. Для вывода собственно символа процента его следует удвоить (%%). Непосредственно за символом % можно указать любые из следующих данных, в приведенной последовательности:
<флаги><ширина><точность><длина_типа><преобразование>
где:
Эти компоненты обрабатываются в очередности слева направо.
Флаги управления форматом
Флаги управления форматом изменяют смысл спецификации преобразования. Можно не указывать ни одного флага или указать несколько следующих флагов в любом порядке:
Преобразование | Отформатированный результат: |
---|---|
o (восьмеричное значение) | Первая цифра – 0. |
X или x (шестнадцатеричное значение) | Для ненулевого результата используется префикс 0X или 0x. |
e , E , f , g и G | В результате всегда выводится десятичная точка (.), даже если за ней не следуют цифры. |
g и G | Нули в конце значения не удаляются из результата (по умолчанию – удаляются). |
c , d , i , s и u | Не действует; # игнорируется. |
0 | Для всех преобразований: заполнение поля нулями в начале. Флаг 0 игнорируется для преобразований d , i , o , u , X и x , если указана точность; этот флаг также игнорируется, если указан флаг - . |
Ширина поля
Необязательное десятичное целочисленное значение, соответствующее минимальному числу символов, используемых для вывода отформатированного элемента. Если ширина поля не указана или если значение меньше числа символов, требуемого для вывода преобразованного значения (при условии соблюдения указанной точности), используется поле с шириной, достаточной для вывода преобразованного значения.
Если число символов, требуемое для представления преобразованного значения, меньше ширины поля, то значение дополняется пробелами или нулями (символами "0") слева (или справа, если указан флаг управления форматом -). Если значение ширины поля начинается с нуля, значение дополняется нулями, в противном случае – пробелами.
Точность
Необязательное десятичное целочисленное значение, следующее за символом точки (.). Действие значения точности зависит от указанного символа преобразования (см. раздел "Символ преобразования" ниже).
Длина типа
Необязательный символ, изменяющий интерпретируемый размер символа преобразования. Единственный поддерживаемый символ длины типа – l
(строчная "L"); этот символ приводит к тому, что в результате преобразований d
, i
, o
, u
, X
или x
обрабатывается аргумент типа long int
или unsigned long int
.
Символ преобразования
Символ, определяющий тип применяемого преобразования. Например, если указан символ d
, команда printf обрабатывает соответствующий аргумент как десятичное целое число. Используются следующие символы преобразования:
d
i
o
u
X
x
d
или i
); o
) u
); X
или x
). X
или x
). e
, E
e
или E
в зависимости от регистра символа преобразования, за которым следует значение со знаком. Это значение обозначает порядок величины. g
, G
Управляющие последовательности
Утилита printf интерпретирует символьные управляющие последовательности в строке формат аналогично языку программирования C. Эти последовательности, которые вводятся с символом обратной косой черты (\), преобразуются следующим способом:
Вывод на экран текста "hello, world" на отдельной строке.
printf "hello, world\n"
То же, но без перехода на новую строку:
printf "hello, world"
Вывод на экран значения в экспоненциальном представлении:
printf "n = %e\n" 3.1415926535897
Базовые подсистемы ЗОСРВ «Нейтрино», POSIX
echo, команда print интерпретатора ksh
Предыдущий раздел: Утилиты