Diferentes formas de usar el comando de columna en Linux

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  Which Column 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  Mostrar el contenido del archivo en formato de tabla  Mostrar el contenido del archivo en formato de tabla 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  Delimiter 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 Salida codiciosa Salida codiciosa

Para superar este comportamiento, utilice la marca-n.

$ column-t-s”: “-n/etc/passwd # Solo en Debian/Ubuntu  No codicioso Salida  Salida no codiciosa 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  Ignore Empty-While-Lines  Ignorar líneas vacías mientras 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 Líneas blancas  Archivo Líneas blancas 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 archivos  File Output Seperator 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  Convertir filas de archivo en columnas 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 de las columnas  Cambiar el tamaño de las columnas 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.