Table of Contents
Diferentes formas de usar el comando de columna en Linux
¿Alguna vez ha tenido que trabajar con archivos CSV y producir resultados en formato tabular estructurado? Recientemente estuve trabajando con la limpieza de datos en un archivo que no tiene la estructura adecuada. Tiene tantos espacios en blanco entre cada columna y tengo que convertirlo a formato CSV para enviarlo a la base de datos. Después de limpiar y crear la salida en formato CSV, mi salida no es visualmente atractiva para verificar la integridad de los datos en el archivo CSV. Este es el momento en que el comando “Columna” me resulta útil.
Según la página de manual, el comando de columna. “ listas de columnas. . En palabras simples, la columna. es una utilidad simple que puede formatear su salida en un formato de columna. (filas y campos) según la estructura de su archivo de origen. El comando column. es parte del paquete util-linux.
Un punto importante a tener en cuenta aquí es que el comando column. se comporta de manera diferente en Debian y Rhel-basadas en distribuciones. La razón es que la distribución basada en Debian usa “ columna. de bsdmainutils. en lugar de util-linux. La versión anterior del comando column. es más reciente que el paquete bsdmainutils. Eche un vistazo al informe de errores para saber más sobre esto.
$ dpkg-S $ (qué columna)
Qué columna
Para fines de demostración, Estoy usando CentOS 7. y mostraré diferentes opciones entre Ubuntu. y CentOS 7. Para comprobar la versión de columna. ejecute el siguiente comando. Este comando también mostrará la versión del paquete util-linux.
$ column–version # no funcionará en Debian/ubuntu
También puede verificar la versión de util-linux por ejecutando los siguientes comandos.
$ rpm-qa | grep-i util-linux # Redhat, Centos, Fedora, Amazon Linux $ dpkg-l | grep-i util-linux # Ubuntu freestar.config.enabled_slots.push
Antes de usar el comando column. es un buen lugar para start será la página de manual y explorará sus opciones.
$ man column
Listar el contenido del archivo en formato tabular
El comando column. puede crear una tabla pasando el nombre del archivo como argumento junto con la bandera-t. Estoy usando /etc/passwd. como archivo de entrada.
$ column-t/etc/passwd
Enumerar el contenido del archivo en formato de tabla
Al mirar la imagen de arriba, puede pensar que esto no es lo que esperábamos y el resultado puede parecer extraño. ¡Sí! Tienes razón. Columnas. considere el espacio como el delimitador predeterminado. al crear una tabla. Este comportamiento se puede anular pasando un delimitador personalizado.
Delimitador personalizado
Los delimitadores personalizados le brindan una amplia gama de opciones con las que trabajar. Para crear un delimitador personalizado, utilice la marca-s seguida de un delimitador. Ahora usaremos “:” como delimitador para dividir el archivo /etc/passwd.
$ columna-s “:”-t/etc/passwd
Delimitador
Mire la imagen de arriba donde la tabla está bien formateada y estructurada. Desde la versión 2.23 de util-linux. la opción-s se ha cambiado para que no sea codiciosa.
Ahora ejecute el mismo comando en Ubuntu. y el resultado será avaro. Esto se debe a que el comando column. ( bsdmainutils. en Ubuntu. tratará varias palabras adyacentes como una sola palabra.
$ column-s ” : “-t/etc/passwd
Salida codiciosa
Para superar este comportamiento, utilice la marca-n.
$ column-t-s”: “-n/etc/passwd # Solo en Debian/Ubuntu
Salida no codiciosa
Ignore las líneas blancas vacías en la salida del archivo
Cuando tiene líneas en blanco en su archivo de entrada, el comando de columna lo ignora por defecto. Vea mi archivo de entrada que está en formato CSV y agregué una línea en blanco entre cada línea. Ahora creemos una tabla como lo hicimos antes con este archivo de entrada.
$ column-t-s “;” dummy.txt
Ignorar líneas mientras vacías
De la imagen de arriba y Puedes ver que mi archivo de entrada dummy.txt. tiene líneas vacías y cuando intento crear una tabla, las líneas vacías se ignoran.
Nota. esto es el comportamiento predeterminado para la variante “ bsdmainutils/util-linux. del comando column. Pero la columna. ( bsdmainutils. tiene la opción de anular este comportamiento pasando el indicador-e.
$ column-e-t-s “,” dummy.txt # Solo en Debian/Ubuntu
Archivo de líneas blancas
En la imagen de arriba, puede ver th La tabla está formateada correctamente y las líneas vacías no se ignoran.
Separador de salida de archivo
Por defecto, se usarán dos espacios en blanco como separadores de salida. Este comportamiento se puede anular pasando el indicador-o. No tendrá una opción de separador de salida disponible en la columna. ( bsdmainutils. .
$ column-t-s “,”-o “||” dummy.txt # Solo en la distribución basada en Rhel
Separador de salida de archivo
Convertir filas de archivo en a columnas
Usando el indicador-x, puede convertir filas en columnas. Este comportamiento es el mismo en las variantes rhel. y ubuntu. del comando de columna. Esta es una característica muy útil cuando tiene que tomar un determinado campo a través del comando awk o column y luego convertirlo en el encabezado de su archivo CSV.
$ column-x fillcols.txt
Convertir filas de archivo en columnas
Cuando ejecuta el comando columna. sin usar ninguna banderas, el comportamiento será el mismo que pasar la bandera-x.
Buscar tamaño de columna
La columna. usa una variable de entorno ($ COLUMNS) para averiguar el tamaño de su terminal y en función del tamaño nosotros Con el comando echo, el tamaño de la tabla se mostrará en la terminal.
$ echo $ COLUMNS
Mire la imagen a continuación. Inicialmente, cambié el tamaño de mi terminal para tener $ COLUMNS el tamaño establecido en 60. y ejecuté el comando de columna. Nuevamente cambié el tamaño de mi terminal para tener $ COLUMNS el tamaño establecido en 114. y ejecuté el comando de la columna nuevamente. Puede ver la diferencia en cómo la columna imprime la tabla cuando cambiamos el tamaño de la terminal.
$ column-t-s “:”/etc/passwd | head 5
Cambiar el tamaño del tamaño de las columnas
Eso es todo por este artículo. Si tiene algún comentario, envíelo en la sección de comentarios.