2012-08-26 7 views
14

Estoy tratando de formatear una lista de entradas en bash, y estoy usando el comando column. Sin embargo, la opción -t se predetermina a usar cualquier espacio en blanco como un delimitador, que no funciona para los datos que tengo (contiene espacios y pestañas). No puedo entender cómo obtener el indicador -s para especificar un carácter de nueva línea como el único delimitador de columna.Formateo de listas con el comando de columna en * nix

+2

puede publicar alguna entrada y salida de la muestra? –

+0

Tenga en cuenta que 'column' está disponible en Linux (y en Mac OS X 10.7.4). No está necesariamente disponible en otras variantes de Unix; no está estandarizado por POSIX, por ejemplo. –

+3

Si quiere 3 columnas de salida, 'pr -l 1 -t -3' se acercará mucho a lo que quería' column' para producir. Para N columnas, cambie el 3 a N; para especificar un ancho, agregue '-w 120' o lo que sea. –

Respuesta

13

En teoría, para especificar un salto de línea, puede utilizar la notación $'...', que es como '...' excepto que apoya al estilo de escape de C-secuencias:

column -t -s $'\n' list-of-entries.txt 

Sin embargo, realmente no entiendo El propósito de esto. Una nueva línea es el delimitador de filas, por lo que una columna de delimitador de $'\n' es equivalente a no tener cualquier columna-delimitador en absoluto:

column -t -s '' list-of-entries.txt 

lo que significa que la entrada será tratado como que tiene sólo una columna; por lo que es equivalente a no usar column en absoluto:

cat list-of-entries.txt 

Parece que en realidad se no lo hace quieren usar la bandera -t, porque el propósito de la bandera -t es asegurar que cada línea de entrada se convierte una línea de salida, y no suena como eso es lo que quieres. Supongo que quieres esto:

column list-of-entries.txt 

que tratará cada línea de list-of-entries.txt como un valor para ser puesto en una celda de la tabla que column salidas.

+0

¡Gran explicación con una comprensión completa del problema real que encontró el interlocutor! – YaOzI

+0

¡Lo golpeaste justo en la cabeza! ¡Gracias por la grandiosa explicación! –

6

Esto funciona para emitir una versión de la impresión bonita de una pestaña archivo delimitado

column -t -s $'\t' list-of-entries.txt 
Cuestiones relacionadas