jueves, 29 de noviembre de 2018

printf para bash

Bash dispone del comando echo para mostrar texto por el terminal. No obstante, en ocasiones este comando se nos puede quedar corto y se hace excesivamente elaborado formatear ciertas cadenas de texto a nuestro gusto.
Para estos cometidos, el comando interno de bash printf será de gran ayuda dado que funciona de forma bastante similar a printf de C.
Veamos un ejemplo de formateo de texto en forma de tabla:
#!/usr/bin/env bash

printf "%-7s %-6s %-4s\n" Puesto Nombre Puntos
printf "%-7s %-6s %-4.2f\n" 1 Juan 9,25
printf "%-7s %-6s %-4.2f\n" 2 Alex 8,57
printf "%-7s %-6s %-4.2f\n" 3 David 8,15
Dando el siguiente resultado por terminal:

$ ./ejemplo.sh 
Puesto  Nombre Puntos
1       Juan   9,25
2       Alex   8,57
3       David  8,15

En este caso, %s significa que en ese lugar irá una cadena de texto. Los modificadores -7 de la primera cadena, %-7s, indican que se reservarán 7 columnas para el texto que irá en ese lugar. Si es más pequeño de ese tamaño, se completará el hueco sobrante con espacios.
Por otra parte, %-4.2f indica que ahí va un número flotante, que se reservan 4 espacios para la parte entera y 2 para los decimales.
Os animo a que sigáis indagando sobre las posibilidades de printf.