Introducción
En el mundo de la administración de sistemas y el procesamiento de datos, contar con herramientas que permitan manipular texto de forma rápida es esencial. Uno de los comandos más útiles y sencillos de Linux es cut, cuya función principal es extraer columnas o campos de un flujo de texto basado en delimitadores o posiciones de caracteres. Aunque a primera vista pueda parecer limitado, su combinación con tuberías y otros comandos lo convierte en una pieza clave para scripts y análisis de logs.
Sintaxis básica
La forma general del comando es:
cut OPTION... [FILE]...
Si no se indica un archivo, cut lee desde la entrada estándar, lo que lo hace ideal para usar en tuberías. Las opciones más importantes definen qué parte del texto se quiere extraer y cómo se separan los campos.
Opciones más usadas
- -f N: selecciona el campo o campos N (por ejemplo,
-f 2para el segundo campo). Se pueden indicar varios campos separados por comas (-f 1,3,5) o rangos (-f 2-4). - -d DELIM: establece el delimitador que separa los campos. Por defecto,
cutusa la tabulación, pero con esta opción se puede especificar cualquier carácter, como una coma (-d ',') o un punto y coma (-d ';'). - -b LIST: extrae bytes según la lista LIST (útil cuando se trabaja con datos binarios o fijos).
- -c LIST: extrae caracteres por posición, similar a
-bpero contando caracteres en lugar de bytes.
Ejemplos prácticos
Imaginemos un archivo CSV llamado datos.csv con el siguiente contenido:
nombre,edad,ciudad Juan,30,Madrid Ana,25,Barcelona Luis,28,Sevilla
Para obtener solo la columna de ciudades, usamos:
cut -d ',' -f 3 datos.csv
Esto devuelve:
ciudad Madrid Barcelona Sevilla
Si queremos eliminar la cabecera y quedarnos solo con los valores, podemos combinar con tail:
cut -d ',' -f 3 datos.csv | tail -n +2
Otro caso frecuente es extraer el primer y tercer campo:
cut -d ',' -f 1,3 datos.csv
Resultado:
nombre,ciudad Juan,Madrid Ana,Barcelona Luis,Sevilla
Cuando el delimitador no es un carácter sencillo, como varios espacios, podemos usar -d ' ' y tratar de reducir múltiples espacios con tr -s ' ' antes de aplicar cut.
Para trabajar con archivos de logs donde la información está en posiciones fijas, la opción -c resulta muy práctica. Supongamos que cada línea tiene un timestamp de 19 caracteres seguido de un mensaje; para obtener solo el mensaje:
cut -c 20- archivo.log
Esto muestra desde el carácter 20 hasta el final de cada línea.
Consejos y trucos
- Recuerda que
cutno maneja delimitadores que sean expresiones regulares; si necesitas algo más complejo, combina conawk. - Usa comillas simples alrededor del delimitador para evitar que el shell interprete caracteres especiales.
- Cuando trabajes con rangos,
-f 2-significa desde el campo 2 hasta el último, mientras que-f -2indica desde el inicio hasta el campo 2. - Para ver rápidamente la estructura de un archivo, prueba
cut -f 1-5 -d ',' archivo.csv | head. - En scripts, guarda el resultado en una variable:
COL2=$(cut -d ';' -f 2 entrada.txt).
Conclusión
El comando cut es una herramienta ligera pero poderosa para extraer columnas de texto en Linux. Su simplicidad lo hace ideal para tareas rápidas de procesamiento de datos, mientras que su capacidad de combinarse con otras utilidades de shell lo convierte en un componente indispensable en cualquier caja de herramientas de administración. Dominar sus opciones y saber cuándo emplearlo te permitirá ahorrar tiempo y escribir scripts más limpios y eficientes.