Introducción
En esta práctica de laboratorio, aprenderá a utilizar el comando cut en Linux para extraer y analizar datos de archivos de texto. Simularemos un escenario en el que trabaja en una librería local y necesita procesar información de clientes y libros. El comando cut le ayudará a extraer columnas o campos específicos de sus archivos de datos, permitiendo una gestión y un análisis de datos eficientes.
Requisitos previos
Antes de comenzar esta práctica, asegúrese de tener:
- Familiaridad básica con la línea de comandos de Linux
- Acceso a una terminal de Linux (esta práctica asume que está utilizando una terminal en el directorio
/home/labex/project)
Comprensión de 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, visualicemos el contenido del archivo customers.txt:
cat /home/labex/project/customers.txt
Debería 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 parecerse 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 ve la salida esperada o encuentra un error, verifique lo siguiente:
- Asegúrese de estar en el directorio correcto (
/home/labex/project) - Verifique que los archivos existan ejecutando
ls -l - Si faltan los archivos, es posible que deba crearlos manualmente o contactar al administrador de la práctica
Extracción de 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 o campos mostrar.
Ejecute el siguiente comando:
cut -d ',' -f 2 /home/labex/project/customers.txt
Desglosemos este comando:
cut: El nombre del comando que estamos usando-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ía ver una salida como esta:
Name
John Doe
Jane Smith
Lily Chen
Andy Brown
Observe que el encabezado "Name" también se incluye. Esto se debe a que cut trata la línea de encabezado como cualquier otra línea del archivo.
Si desea excluir el encabezado, puede 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 ve la salida esperada:
- Verifique que haya escrito el comando exactamente como se muestra
- Asegúrese de que el archivo
customers.txtno haya sido modificado - Intente ejecutar
cat /home/labex/project/customers.txtnuevamente para verificar el contenido del archivo
Extracción de Múltiples Campos
A menudo, necesitamos extraer varios campos de nuestros datos. Vamos a extraer tanto los nombres como las edades de los clientes del archivo customers.txt.
Use 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)
Su salida debería verse así:
Name,Age
John Doe,25
Jane Smith,35
Lily Chen,30
Andy Brown,22
Como puede 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 su salida no coincide:
- Asegúrese de haber incluido la coma entre el 2 y el 3 en la opción
-f - Compruebe que el archivo
customers.txtno haya sido alterado - Intente ejecutar el comando sin la opción
-d ','para ver si el archivo utiliza un delimitador diferente
Extracción de un Rango de Campos
El comando cut también nos permite extraer un rango de campos. Vamos a extraer todos los campos desde el ID del cliente hasta la edad (campos 1 al 3) del archivo customers.txt.
Use este comando:
cut -d ',' -f 1-3 /home/labex/project/customers.txt
Esto es lo nuevo en este comando:
-f 1-3: Especifica un rango de campos del 1 al 3, inclusive
Su salida debería parecerse 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 puede combinar rangos y campos individuales, como -f 1-3,5 para extraer los campos 1, 2, 3 y 5.
Si no ve la salida esperada:
- Verifique que haya usado un guion (-) entre el 1 y el 3 en la opción
-f - Asegúrese de que el archivo
customers.txtno haya sido modificado - Intente extraer cada campo individualmente (por ejemplo,
-f 1,-f 2,-f 3) para comprobar si todos los campos están presentes en el archivo
Trabajo 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, utilizando 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 utilizando las posiciones de los caracteres:
cut -c 11-25 /home/labex/project/inventory.txt
Esto es lo nuevo:
-c 11-25: Indica acutque extraiga los caracteres del 11 al 25 de cada línea
Debería 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 obtiene la salida esperada:
- Asegúrese de que el archivo
inventory.txtse haya creado correctamente (puede comprobarlo concat /home/labex/project/inventory.txt) - Verifique que haya utilizado el rango de caracteres correcto (
11-25) - Intente ajustar el rango de caracteres si los títulos parecen estar desalineados
Combinación de 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.
Ejecute 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}$: Coincide con 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ía ver una salida similar a:
Mystery in the Woods
Science Explained
Si no ve la salida esperada:
- Verifique que el archivo
books.txtcontenga los datos correctos - Compruebe que haya introducido correctamente la expresión regular de
grep - Intente ejecutar el comando
grepsolo para ver qué líneas está seleccionando - Asegúrese de que el comando
cutesté especificando correctamente el segundo campo
Resumen
En esta práctica de laboratorio, ha aprendido a utilizar el comando cut en Linux para extraer datos específicos de archivos de texto. Ha practicado:
- La extracción de campos individuales de archivos CSV
- La extracción de múltiples campos y rangos de campos
- El trabajo con datos de ancho fijo
- La combinación de
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.
Parámetros adicionales del comando cut no cubiertos en esta práctica:
-s: Suprime las líneas que no contienen delimitadores--output-delimiter=STRING: Utiliza STRING como delimitador de salida--complement: Complementa el conjunto de bytes, caracteres o campos seleccionados
Para profundizar en su aprendizaje, intente experimentar con estos parámetros adicionales y cree sus propios archivos de datos para practicar. Recuerde que el comando man cut proporciona un manual completo para el comando cut si necesita más información.



