Por ejemplo, tengo un archivo (producido con echo -e "var1\tvar2\t\var3\tvar4" > foo
) que se genera como:
$ cat foo
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Prefiero la salida como esta (aquí usé vim
y :set tabstop=14
):
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Puedo obtener la misma funcionalidad cat
si la uso $ tabs=15
en bash (vea esta pregunta ). ¿Hay algún programa que realice este tipo de formateo automáticamente? No quiero experimentar con el tabs
valor antes de cat
crear un archivo.
shell
command-line
cat
columns
Sebastian
fuente
fuente
-s $'\t'
(aunque no se encuentra en todas las implementaciones de columna) en caso de que algunos de los campos contengan espacios.$'\t'
significa carácter de tabulación. Nueva línea es$'\n'
y así sucesivamente.column -ts: /etc/passwd
. ¡Se ve bien!-n
, es decir, evitar fusionar múltiples delimitadores adyacentesVarias opciones:
La columna es un comando no estándar, algunas implementaciones / versiones no admiten la opción -s. Calcula el ancho de la columna en función de la entrada, pero eso significa que solo puede comenzar a mostrarse una vez que se haya alimentado toda la entrada.
$'...'
La sintaxis ksh93 también se encuentra en zsh y bash.Con zsh:
fuente
También puede usar
rs
como alternativa acolumn -t
:-c
cambia el separador de columna de entrada, pero-c
solo establece el separador de columna de entrada en una pestaña.-z
establece el ancho de cada columna al ancho de la entrada más larga de la columna en lugar de hacer que todas las columnas tengan el mismo ancho. Si algunas líneas tienen menos columnas que la primera línea, agregue-n
.fuente
rs
es eso No tengo ese comando instalado en mi CentOS ni en mis sistemas Ubuntu / Mint.rs
, por lo que puede instalarlo conapt-get install rs
.(x=$(cat);rs -c -z $(wc -l<<<"$x")<<<"$x")
? No sé cómo usaría eso con un archivo csvOtra herramienta que puede hacer esto es
tsv-pretty
de TSV Utilities de eBay (descargo de responsabilidad: soy el autor). Toma el paso adicional de alinear campos numéricos en el punto decimal. Por ejemplo:Hay varias opciones de formato. Por ejemplo,
-u
subraya el encabezado y-f
formatea los flotantes en un campo de manera similar para facilitar la lectura:Más información está disponible en la referencia tsv-pretty .
fuente
La pregunta era sobre la salida de columnas delimitadas por tabuladores.
Entonces, la respuesta correcta es una pequeña adaptación de la respuesta de @nisetama. Agregué la opción -C $ '\ t' que establece el formato de salida.
Kudo a @nisetama aunque :)
fuente
EJEMPLOS DE EJECUCIÓN
REF LIB en: https://github.com/gdbtek/linux-cookbooks/blob/master/libraries/util.bash
fuente
sed
ser utilizados.