Introducción
En este laboratorio, aprenderás a utilizar el comando cut en Linux para extraer y analizar datos de archivos de texto. Simularemos un escenario en el que trabajas en una librería local y necesitas procesar información de clientes y libros. El comando cut te ayudará a extraer columnas o campos específicos de tus archivos de datos, permitiendo una gestión y un análisis de datos eficientes.
Requisitos previos
Antes de comenzar este laboratorio, asegúrate de tener:
- Familiaridad básica con la línea de comandos de Linux
- Acceso a una terminal de Linux (este laboratorio asume que estás utilizando una terminal en el directorio
/home/labex/project)
Comprender los datos de la librería
Comencemos examinando los archivos de datos de la librería. Tenemos dos archivos: customers.txt y books.txt.
Primero, veamos el contenido del archivo customers.txt:
cat /home/labex/project/customers.txt
Deberías ver una salida similar a esta:
ID,Name,Age,Email
1,John Doe,25,john.doe@email.com
2,Jane Smith,35,jane.smith@email.com
3,Lily Chen,30,lily.chen@email.com
4,Andy Brown,22,andy.brown@email.com
Ahora, veamos el archivo books.txt:
cat /home/labex/project/books.txt
La salida debería ser parecida a:
ISBN,Title,Author,Price
978-1234567890,The Great Adventure,Alice Writer,19.99
978-2345678901,Mystery in the Woods,Bob Author,24.99
978-3456789012,Cooking Basics,Carol Chef,15.99
978-4567890123,Science Explained,David Scientist,29.99
Estos archivos contienen valores separados por comas (CSV) con diferentes campos para clientes y libros.
Si no ves la salida esperada o encuentras un error, verifica lo siguiente:
- Asegúrate de estar en el directorio correcto (
/home/labex/project) - Verifica que los archivos existan ejecutando
ls -l - Si los archivos faltan, es posible que debas crearlos manualmente o contactar al administrador de tu laboratorio
Extraer nombres de clientes
Ahora que hemos visto nuestros datos, usemos el comando cut para extraer información específica. Comenzaremos extrayendo los nombres de los clientes del archivo customers.txt.
El comando cut utiliza la opción -d para especificar un delimitador (en nuestro caso, una coma) y la opción -f para seleccionar qué campo(s) mostrar.
Ejecuta el siguiente comando:
cut -d ',' -f 2 /home/labex/project/customers.txt
Analicemos este comando:
cut: El nombre del comando que estamos utilizando-d ',': Especifica que estamos usando una coma como delimitador entre campos-f 2: Indica acutque extraiga el segundo campo/home/labex/project/customers.txt: La ruta a nuestro archivo de entrada
Deberías ver una salida como esta:
Name
John Doe
Jane Smith
Lily Chen
Andy Brown
Observa que el encabezado "Name" también está incluido. Esto se debe a que cut trata la línea de encabezado igual que cualquier otra línea del archivo.
Si deseas excluir el encabezado, puedes usar el comando tail en combinación con cut:
cut -d ',' -f 2 /home/labex/project/customers.txt | tail -n +2
Esta tubería (pipeline) hace dos cosas:
cutextrae el segundo campo (nombres) de cada líneatail -n +2muestra la salida a partir de la segunda línea, omitiendo efectivamente el encabezado
La salida ahora debería ser:
John Doe
Jane Smith
Lily Chen
Andy Brown
Si no ves la salida esperada:
- Verifica dos veces que hayas escrito el comando exactamente como se muestra
- Asegúrate de que el archivo
customers.txtno haya sido modificado - Intenta ejecutar
cat /home/labex/project/customers.txtnuevamente para verificar el contenido del archivo
Extraer múltiples campos
A menudo, necesitamos extraer varios campos de nuestros datos. Extraigamos tanto los nombres como las edades de los clientes del archivo customers.txt.
Usa el siguiente comando:
cut -d ',' -f 2,3 /home/labex/project/customers.txt
Este comando es similar al anterior, pero ahora especificamos dos campos en la opción -f:
-f 2,3: Extrae el segundo y tercer campo (nombre y edad)
Tu salida debería verse así:
Name,Age
John Doe,25
Jane Smith,35
Lily Chen,30
Andy Brown,22
Como puedes ver, podemos especificar múltiples campos separándolos con comas en la opción -f. La salida mantiene el delimitador original (coma) entre los campos extraídos.
Si tu salida no coincide:
- Asegúrate de haber incluido la coma entre el 2 y el 3 en la opción
-f - Verifica que el archivo
customers.txtno haya sido alterado - Intenta ejecutar el comando sin la opción
-d ','para ver si el archivo utiliza un delimitador diferente
Extraer un rango de campos
El comando cut también nos permite extraer un rango de campos. Extraigamos todos los campos desde el ID del cliente hasta la edad (campos 1-3) del archivo customers.txt.
Usa este comando:
cut -d ',' -f 1-3 /home/labex/project/customers.txt
Esto es lo nuevo en este comando:
-f 1-3: Esto especifica un rango de campos del 1 al 3, inclusive
Tu salida debería ser parecida a:
ID,Name,Age
1,John Doe,25
2,Jane Smith,35
3,Lily Chen,30
4,Andy Brown,22
Este comando extrae un rango de campos del 1 al 3. También puedes combinar rangos y campos individuales, como -f 1-3,5 para extraer los campos 1, 2, 3 y 5.
Si no ves la salida esperada:
- Verifica que hayas usado un guion (-) entre el 1 y el 3 en la opción
-f - Asegúrate de que el archivo
customers.txtno haya sido modificado - Intenta extraer cada campo individualmente (por ejemplo,
-f 1,-f 2,-f 3) para comprobar si todos los campos están presentes en el archivo
Trabajar con campos de ancho fijo
A veces, los datos no están separados por delimitadores, sino que están organizados en columnas de ancho fijo. El comando cut también puede manejar esto, usando la opción -c para especificar las posiciones de los caracteres.
Creemos un nuevo archivo con datos de ancho fijo:
cat << EOF > /home/labex/project/inventory.txt
ISBN Title Quantity
1234567890The Great Adv 100
2345678901Mystery in th 75
3456789012Cooking Basi 50
4567890123Science Exp 125
EOF
Este comando utiliza un "here-document" (<<EOF) para crear un nuevo archivo llamado inventory.txt con datos de ancho fijo.
Ahora, extraigamos solo los títulos de los libros usando las posiciones de los caracteres:
cut -c 11-25 /home/labex/project/inventory.txt
Esto es lo nuevo:
-c 11-25: Esto le dice acutque extraiga los caracteres del 11 al 25 de cada línea
Deberías ver:
itle Q
The Great Adv
Mystery in th
Cooking Basi
Science Exp
Este comando extrae los caracteres del 11 al 25 de cada línea, lo que corresponde al campo del título en nuestros datos de ancho fijo.
Si no obtienes la salida esperada:
- Asegúrate de que el archivo
inventory.txtse haya creado correctamente (puedes verificarlo concat /home/labex/project/inventory.txt) - Verifica que hayas usado el rango de caracteres correcto (
11-25) - Intenta ajustar el rango de caracteres si los títulos parecen desalineados
Combinar cut con otros comandos
El comando cut se vuelve aún más potente cuando se combina con otros comandos de Linux. Usemos cut junto con grep para encontrar todos los libros con un precio superior a $20 y mostrar sus títulos.
Ejecuta este comando:
grep -E ',[2-9][0-9]\.[0-9]{2}$' /home/labex/project/books.txt | cut -d ',' -f 2
Esta tubería de comandos hace dos cosas:
grep -E ',[2-9][0-9]\.[0-9]{2}$': Utiliza una expresión regular para encontrar líneas donde el precio es de $20 o más,[2-9][0-9]\.[0-9]{2}$: Busca una coma, seguida de un número del 20 al 99, un punto decimal y dos dígitos más al final de la línea
cut -d ',' -f 2: Extrae solo el título del libro (segundo campo) de las líneas quegrepencontró
Deberías ver una salida similar a:
Mystery in the Woods
Science Explained
Si no ves la salida esperada:
- Verifica que el archivo
books.txtcontenga los datos correctos - Comprueba que hayas ingresado la expresión regular de
grepcorrectamente - Intenta ejecutar el comando
grepsolo para ver qué líneas está seleccionando - Asegúrate de que el comando
cutesté especificando correctamente el segundo campo
Resumen
En este laboratorio, has aprendido a utilizar el comando cut en Linux para extraer datos específicos de archivos de texto. Has practicado:
- Extraer campos individuales de archivos CSV
- Extraer múltiples campos y rangos de campos
- Trabajar con datos de ancho fijo
- Combinar
cutcon otros comandos comogrep
Estas habilidades son invaluables para el procesamiento y análisis de datos en diversos escenarios, desde la gestión del inventario de una librería hasta el manejo de cualquier tipo de datos de texto estructurados.
Otros parámetros del comando cut no cubiertos en este laboratorio:
-s: Suprime las líneas que no contienen delimitadores--output-delimiter=STRING: Usa STRING como delimitador de salida--complement: Complementa el conjunto de bytes, caracteres o campos seleccionados
Para continuar con tu aprendizaje, intenta experimentar con estos parámetros adicionales y crea tus propios archivos de datos para practicar. Recuerda que el comando man cut proporciona un manual completo sobre el comando cut si necesitas más información.



