Inicio > Procesamiento y búsqueda de texto > printf

printf: Salida formateada

`printf` es un comando que, similar a la función `printf` del lenguaje C, imprime datos en la salida estándar según una cadena de formato especificada. Permite formatear variables o valores literales en varios formatos (enteros, punto flotante, cadenas, etc.) y puede insertar caracteres especiales usando secuencias de escape. Ofrece un control de salida más preciso que el comando `echo`.

Resumen

`printf` controla la salida con precisión utilizando una cadena de formato y argumentos. Se utiliza en scripts para diversas tareas como la generación de informes y el formato de mensajes de registro.

Características principales

  • Soporta varios especificadores de formato (%s, %d, %f, etc.)
  • Soporta secuencias de escape (\n, \t, \x, etc.)
  • Salida por tipo de dato: enteros, punto flotante, cadenas, etc.
  • Permite controlar el ancho, la precisión y la alineación de la salida

Opciones principales (especificadores de formato y secuencias de escape)

El comando `printf` controla su comportamiento no tanto a través de opciones que comienzan con `-`, sino a través de 'especificadores de formato' y 'secuencias de escape' incluidas en la cadena de formato. A continuación se muestran los más utilizados.

Especificadores de formato

Secuencias de escape

Comando generado:

Combina los comandos.

Descripción:

`printf` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de uso

Ejemplos de uso de `printf` utilizando varios especificadores de formato y secuencias de escape.

Salida de cadena básica

printf "Hello, World!\n"

Imprime una cadena simple y añade una nueva línea.

Salida combinada de entero y cadena

printf "Nombre: %s, Edad: %d años\n" "Hong Gildong" 30

Formatea e imprime un entero y una cadena juntos.

Especificación de precisión de punto flotante

printf "Pi: %.2f\n" 3.141592

Imprime un número de punto flotante con dos decimales.

Ancho y alineación de salida

printf "%-10s %5d\n" "Nombre del producto" 123

Alinea una cadena a la izquierda en un campo de 10 caracteres y un entero a la derecha en un campo de 5 caracteres.

Salida hexadecimal y octal

printf "Decimal: %d, Hexadecimal: %x, Octal: %o\n" 255 255 255

Imprime un número en hexadecimal y octal.

Uso con variables

NAME="Kim Cheolsu"
SCORE=95
printf "Estudiante: %s, Puntuación: %d puntos\n" "$NAME" "$SCORE"

Utiliza variables de shell como argumentos para `printf`.

Consejos y precauciones

Consejos y puntos a tener en cuenta para usar `printf` de manera efectiva.

Diferencias con `echo`

`echo` se usa principalmente para la salida de cadenas simples y tiene limitaciones en la interpretación de secuencias de escape (requiere la opción `-e`) o en el formato. En cambio, `printf` permite un control preciso del formato de salida a través de especificadores de formato e interpreta siempre las secuencias de escape.

  • Secuencias de escape: `printf` siempre interpreta las secuencias de escape. `echo` requiere la opción `-e`.
  • Formato: `printf` soporta varios especificadores de formato como `%s`, `%d`, etc., permitiendo un control detallado del formato de salida. `echo` no tiene esta funcionalidad.
  • Nueva línea: `echo` añade una nueva línea por defecto después de la salida, mientras que `printf` requiere la especificación explícita de `\n`.

Coincidencia de cadena de formato y argumentos

El número de especificadores de formato en la cadena de formato debe coincidir con el número de argumentos proporcionados. Si faltan argumentos, el shell puede usar valores predeterminados (por ejemplo, 0 o una cadena vacía), y si hay demasiados argumentos, los excedentes se ignorarán. Esto puede llevar a resultados inesperados, así que tenga cuidado.

Precaución al usar secuencias de escape

Especialmente al imprimir el carácter `\`, debe usarlo dos veces como `\\`. Dado que el shell puede interpretar la barra invertida primero, puede ser necesario un pre-procesamiento de escape antes de pasarlo a `printf`. Generalmente, es seguro encerrar la cadena de formato entre comillas dobles (").


Comandos de la misma categoría