Guía completa del comando cut en Linux: ¡extrae exactamente las columnas que necesitas de logs y archivos CSV!

Introducción

En entornos Linux, cuando necesitas extraer rápidamente solo las columnas deseadas de archivos de registro (logs) masivos o datos CSV, el comando cut es la herramienta más ligera y potente. En esta guía exploramos técnicas fundamentales listas para usar en producción, desde la separación de campos mediante delimitadores hasta el corte por bytes y caracteres en formatos de ancho fijo.

Extracción de datos CSV y de cuentas del sistema mediante delimitador (-d) y campos (-f)

Para crear un directorio exclusivo destinado a las prácticas del comando cut y situarte en él, ejecuta el comando mkdir -p ~/cut_demo && cd ~/cut_demo.

mkdir -p ~/cut_demo && cd ~/cut_demo

Crea un archivo de datos de usuario de prueba delimitado por comas (,) escribiendo el archivo users.csv con el comando echo.

echo -e ‘id,name,role,department\n1,alice,admin,security\n2,bob,dev,backend\n3,charlie,dev,frontend’ > users.csv

El comando cut es una herramienta para extraer columnas (campos) específicos o secciones basadas en bytes o caracteres de un archivo de texto o de la salida de un comando según un delimitador determinado.
Usa la opción -d para especificar la coma (,) como delimitador y la opción -f para seleccionar el segundo y cuarto campo, obteniendo de forma limpia solo el nombre y el departamento del archivo users.csv.
⚙️ [Opciones principales]

-d : Especifica el delimitador que se usará para separar campos (por defecto es un tabulador).
-f : Indica el número o rango de campos (columnas) que se extraerán.
-c : Corta los datos tomando como referencia posiciones por caracteres en lugar de bytes.
-b : Corta los datos tomando como referencia posiciones por bytes.
--complement : Invierte la selección y muestra únicamente las partes restantes, excluyendo los campos o caracteres especificados.
-s : Excluye de la salida las líneas que no contengan el delimitador.
--output-delimiter : Cambia la cadena delimitadora de campos utilizada al mostrar el resultado por el texto deseado.

cut -d’,’ -f2,4 users.csv

A partir del archivo /etc/passwd, que contiene la información de cuentas del sistema Linux, extrae únicamente el nombre de usuario (campo 1) y la ruta de la shell predeterminada (campo 7) tomando como delimitador los dos puntos (:), y luego usa el comando head para verificar las primeras 5 líneas.
Al combinar el comando cut con tuberías (|), puedes supervisar fácilmente solo las columnas esenciales que necesitas de extensos archivos de configuración del sistema.

cut -d’:’ -f1,7 /etc/passwd | head -n 5

Gestión de logs de ancho fijo mediante corte por bytes (-b) y caracteres (-c)

Para continuar con la práctica, ejecuta el comando cd ~/cut_demo y muévete al directorio de trabajo creado anteriormente.

cd ~/cut_demo

Para poner en práctica el corte por caracteres de ancho fijo, crea un archivo de registro de muestra service.log donde la fecha, la hora y el nivel de log se registran en un formato constante.

echo -e ‘2026-10-07 14:00:01 [INFO] Service started\n2026-10-07 14:00:05 [WARN] High memory usage\n2026-10-07 14:00:12 [ERROR] Connection timed out’ > service.log

Aplica la opción -c1-10 al comando cut para cortar desde el carácter 1 hasta el carácter 10 de cada línea, extrayendo de forma limpia únicamente la fecha con formato año-mes-día.

cut -c1-10 service.log

Utiliza la opción -c12-19 para aislar y mostrar con precisión solo la marca de tiempo (hora:minuto:segundo) ubicada entre los caracteres 12 y 19 del archivo de log.

cut -c12-19 service.log

Si omites la posición final como en -c22-, puedes cortar todo el texto restante desde el carácter 22 hasta el final de cada línea en una sola operación, extrayendo el mensaje del log.

cut -c22- service.log

Cambio del delimitador de salida (–output-delimiter) y exclusión de campos seleccionados (–complement)

Ejecuta el comando cd ~/cut_demo para situarte en el directorio donde residen los archivos de práctica creados anteriormente.

cd ~/cut_demo

La opción --output-delimiter te permite definir una cadena de texto personalizada para separar los campos extraídos en la salida en lugar del delimitador por defecto.
Extrae los campos 2 y 3 del archivo users.csv separado por comas (,) e inserta un espacio y una barra vertical (|) entre ellos para mejorar la legibilidad.

cut -d’,’ -f2,3 –output-delimiter=’ | ’ users.csv

Si especificas la opción --complement, se invertirá la selección para mostrar todas las columnas excepto las indicadas.
Utilízala junto con -f3 para omitir únicamente el tercer campo (el rol) y conservar el resto intacto en la salida.

cut -d’,’ –complement -f3 users.csv

Flujo práctico en producción: análisis estadístico de IP de conexión combinando cut, sort y uniq

Para continuar con el ejercicio, ejecuta cd ~/cut_demo y accede al directorio de trabajo asignado.

cd ~/cut_demo

Para simular el análisis de solicitudes de clientes a un servidor web, crea un archivo de registro de muestra access.log que contenga las IP de conexión y las peticiones HTTP separadas por espacios.

echo -e ‘192.168.1.10 - - [07/Oct/2026] “GET /index.html” 200\n192.168.1.15 - - [07/Oct/2026] “POST /login” 401\n192.168.1.10 - - [07/Oct/2026] “GET /dashboard” 200\n10.0.0.5 - - [07/Oct/2026] “GET /api/v1” 200\n192.168.1.10 - - [07/Oct/2026] “POST /logout” 200’ > access.log

Con la opción -d' ' -f1 del comando cut, aísla la primera columna basada en espacios, que corresponde a las direcciones IP de los clientes.
A continuación, ordena los datos con sort, cuenta las ocurrencias con uniq -c y enlaza nuevamente con sort -nr para obtener una clasificación estadística ordenada descendentemente por frecuencia de conexión.

cut -d’ ’ -f1 access.log | sort | uniq -c | sort -nr

Hasta aquí hemos visto cómo utilizar el comando cut para extraer de manera rápida y limpia exactamente las columnas que necesitas de logs y datos CSV.
Aprovecha adecuadamente las opciones de delimitador y campos para agilizar tus tareas habituales de procesamiento y transformación de texto.