Tengo una función que genera muchas filas de información que quiero formatear en columnas. El problema es que el ancho de cualquier "celda" particular (si puedo usar ese término) de datos es variable, por lo que conectarlo a algo como awk no me da lo que quiero.¿Cómo puedo formatear la salida de un comando bash en columnas nítidas?
La función es "claves" (no es que importe) y estoy intentando algo como esto:
$ keys | awk '{ print $1"\t\t" $2 }'
pero la salida (un fragmento de la misma, que es) es el siguiente:
"option-y" yank-pop
"option-z" execute-last-named-cmd
"option-|" vi-goto-column
"option-~" _bash_complete-word
"option-control-?" backward-kill-word
"control-_" undo
"control-?" backward-delete-char
¿Cómo puedo obligar a las cosas a mantenerse en columnas ordenadas? ¿Es esto posible con awk, o necesito usar algo más?
agradable y rápido y útil, pero la versión awk me permite modificarla más fácilmente resolver otro problema: dividir algo que no sean espacios. Intenté con esto: 'IFS = '"'; llaves | column -t' pero la columna no parece respetar el valor de $ IFS. – iconoclast
Por supuesto que no. Al igual que la página del hombre dice, usa '-s'. –
@Brandon: 'IFS' es el separador de campo interno para el' shell', no para los programas que se ejecutan a través del shell, aunque * pueden * utilizar el mismo valor (es). –