Tutoriales

Cómo formatear texto en una tabla usando el comando ‘columna’ de Linux

En este artículo, aprenderá a utilizar Linux. column Los comandos dan formato al texto en tablas, procesan archivos CSV y producen resultados limpios y estructurados, además de proporcionar más de 15 ejemplos reales de formato de datos.

trabajar con CSV Los archivos o datos no estructurados a menudo requieren convertir resultados desordenados a un formato tabular legible.

este column Command es una utilidad simple pero poderosa que convierte datos sin procesar en columnas y tablas con el formato adecuado, lo que facilita la validación y el análisis de datos.

este column El comando es parte de util-linux Empaquete y formatee la entrada en columnas de acuerdo con la estructura del archivo fuente.

Ya sea que esté limpiando datos para exportarlos, formateando archivos de configuración o preparando datos para importarlos a una base de datos, las columnas pueden brindarle la flexibilidad de formato que necesita.

Diferencias distributivas importantes

Publicaciones relacionadas

este column Los comandos se comportan de manera diferente entre distribuciones; por ejemplo, los sistemas basados ​​en Debian usan tradicionalmente bsdmainutils versión, mientras que los sistemas basados ​​en RHEL utilizan util-linux La versión se actualiza para proporcionar más funciones.

Comprueba qué versión estás utilizando:

dpkg -S $(which column)  # Debian/Ubuntu

bsdextrautils: /usr/bin/column

Verifica tu column versión y util-linux embalar:

column --version  # RHEL-based systems only
rpm -qa | grep -i util-linux   # RHEL, CentOS, Fedora, Amazon Linux
dpkg -l | grep -i util-linux   # Debian/Ubuntu

Salida de muestra en sistemas basados ​​en Debian.

ii  util-linux                                 2.39.3-9ubuntu6.4

Antes de profundizar en los ejemplos, eche un vistazo a las opciones disponibles:

man column

Formatos de tabla básicos en Linux

este -t flag Cree una tabla a partir de su archivo de entrada, p.e. /etc/passwd Por ejemplo:

column -t /etc/passwd
Convertir datos de archivos a formato tabular

Este resultado parece confuso porque la columna trata los espacios como el delimitador predeterminado. Para resolver este problema, debe especificar un delimitador personalizado.

Utilice separadores personalizados

este -s bandera especifica un delimitador personalizado /etc/passwdel delimitador es colon:

column -s ":" -t /etc/passwd
Establecer separador de dos puntos para el formato de tabla
Establecer separador de dos puntos para el formato de tabla

La tabla ahora tiene el formato correcto y cada campo está separado correctamente.

existir ubuntu/Durbaneste bsdmainutils La versión trata múltiples delimitadores adyacentes como un solo delimitador (comportamiento codicioso), así que use -n Marcar para evitar esto:

column -t -s ":" -n /etc/passwd  # Debian/Ubuntu only

Formatear CSV y archivos delimitados

Para archivos delimitados por comas:

column -t -s "," data.csv

Para archivos delimitados por tabulaciones:

column -t -s $'\t' data.tsv

Para archivos delimitados por barras verticales:

column -t -s "|" data.txt

Manejo de líneas en blanco en Linux

De forma predeterminada, las columnas ignoran las líneas vacías en la entrada; considere el siguiente archivo CSV que contiene líneas vacías:

column -t -s ";" dummy.txt
Ignorar líneas vacías while
Ignorar líneas vacías while

existir Durban/ubuntupara conservar líneas vacías, utilice -e bandera:

column -e -t -s "," dummy.txt  # Debian/Ubuntu only

Delimitador de salida personalizado en Linux

El delimitador de salida predeterminado son dos espacios, así que use -o Banderas (solo sistemas basados ​​en RHEL):

column -t -s "," -o " | " dummy.txt  # RHEL-based only

Esto crea un formato de salida delimitado por barras verticales, que resulta útil a la hora de preparar datos para su posterior procesamiento.

Puedes usar cualquier cadena como delimitador:

column -t -s ":" -o " → " /etc/passwd | head -5  # Unicode arrow separator
column -t -s "," -o "||" data.csv                # Double pipe separator

Convertir filas en columnas en Linux

este -x flag Convierte filas en columnas, llenándolas horizontalmente antes de pasar a la siguiente fila:

column -x fillcols.txt
Convertir filas de archivos en columnas
Convertir filas de archivos en columnas

Esto es particularmente útil cuando se muestra una lista de elementos de forma compacta:

ls /usr/bin | column -x

Una columna de ejecución sin bandera tiene por defecto -x Comportamiento.

Usar salida de comando

La columna es buena para formatear dinámicamente la salida del comando.

Formatear salida df.

df -h | column -t

Formatear salida ps.

ps aux | column -t

Crear tablas rápidas a partir de datos.

echo -e "Name,Age,City\nJohn,30,NYC\nJane,25,LA" | column -t -s ","

producción:

Name  Age  City
John  30   NYC
Jane  25   LA

Formato clave-valor similar a JSON

Cuando se utilizan pares clave-valor:

column -t -s "=" config.ini

Para variables de entorno en formato legible por humanos:

env | column -t -s "="

Especificar el ancho de la columna

Usar ancho de salida de control COLUMNS Variables de entorno:

COLUMNS=80 column -t -s ":" /etc/passwd | head -5

El comando de columna se adapta automáticamente al ancho de su terminal:

echo $COLUMNS  # Check current terminal width

Cuando cambias el tamaño del terminal, column Ajuste su salida en consecuencia. Compare estos ejemplos con diferentes anchos de terminales:

column -t -s ":" /etc/passwd | head -5
Cambiar el tamaño de las columnas
Cambiar el tamaño de las columnas

Formato de tabla avanzado (util-linux 2.23+)

versión moderna column Proporciona opciones adicionales de formato de tabla:

Especifique qué línea es el encabezado:

column -t -s "," -N "Name,Age,City" data.csv

Alinear columnas a la derecha

column -t -s "," -R 2,3 data.csv  # Right-align columns 2 and 3

Truncar columna

column -t -s ":" -T 1,6 /etc/passwd  # Truncate columns 1 and 6

Combinado con otros comandos

La columna funciona muy bien en tuberías:

# Format awk output
awk -F: '{print $1,$3,$6}' /etc/passwd | column -t

# Format cut output
cut -d: -f1,3,6 /etc/passwd | column -t -s ":"

# Format grep results
grep -v "^#" /etc/services | column -t

Genere un informe formateado a partir de los datos:

(echo "USER,CPU%,MEM%,COMMAND"; ps aux | awk '{print $1","$3","$4","$11}' | tail -n +2) | column -t -s ","

este column Los comandos transforman datos desordenados en tablas legibles con el mínimo esfuerzo.

Ya sea que esté limpiando archivos CSV, formateando archivos de configuración o haciendo que la salida de comandos sea más legible, las columnas brindan la flexibilidad necesaria para una presentación de datos efectiva.

¿Cómo es tu experiencia con el comando de columna? Comparta sus casos de uso en los comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba