Ejemplos prácticos del comando CUT en Linux
Vamos a ver diferentes ejemplos práticos del comando CUT en sistemas GNU/Linux Dicho comando nos ayudará a trabajar con el contenido de archivos, desde la consola de comandos. Forma parte de la familia de comandos que trabajan con la salida estandard (stdout) de los ficheros, como SED, del que ya hemos hablado o TR.
¿En qué consiste el comando CUT?
Se encarga de cortar las columnas o campos seleccionados de uno o más ficheros. Si no se indica ningún fichero, o si éste es -, se lee la entrada estandard (stdin)
Entre sus usos más habituales se encuentra sacar información de los campos o simplificar ficheros más complejos. Se utiliza de manera asidua en la elaboración de scripts, sobre todo para filtrar un resultado de una consulta o la combinación de un conjunto de comandos.
Ejemplos prácticos del comando CUT
Partimos de la base que tenemos en un documento la información de los alumnos a un club de deportes, con su fecha de nacimiento, nombre, apellido y sección:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 2010:Junio:23:Carla:Martínez:Equipo-de-básquet 2011:Abril:22:Yoel:Alonso:Clases-de-danza 2009:Febrero:21:Bernat:Molina:Equipo-de-básquet 2012:Enero:22:Noelia:Bernabeu:Equipo-de-básquet 2010:Mayo:11:Arnau:Silvestre:Clases-de-judo 2011:Febrero:23:Lucia:Pérez:Clases-de-danza 2013:Mayo:20:Gerard:Reverte:Clases-de-judo 2009:Julio:03:Oriol:López:Clases-de-básquet 2010:Marzo:02:Isaac:Meler:Club-de-ajedrez 2012:Octubre:03:Miquel:Roca:Equipo-de-fútbol-sala 2009:Abril:25:Carmen:Grandes:Clases-de-natación 2014:Diciembre:30:Andrés:Romero:Club-de-ajedrez 2010:Enero:25:Irene:García:Clases-de-danza 2011:Noviembre:22:Isabel:Valle:Equipo-de-fútbol-sala 2010:Mayo:14:María:Segovia:Equipo-de-básquet |
Los primero que haremos, será extaer únicamente los nombres y apellidos de los alumnos:
1 | cut -d ":" -f 4,5 ejercicio-cut.txt |
Con el resultado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Carla:Martínez Yoel:Alonso Bernat:Molina Noelia:Bernabeu Arnau:Silvestre Lucia:Pérez Gerard:Reverte Oriol:López Isaac:Meler Miquel:Roca Carmen:Grandes Andrés:Romero Irene:García Isabel:Valle María:Segovia |
Lo que hemos hecho es indicar el delimitador «:» tras el parámetro «-d«, y seleccionar las columnas que queremos utilizar, mediante el parámetro «-f«. En concreto las columnas 4 y 5
Lo que haremos a continuación será sustituir los dos puntos «:», por un espacio o un tabulador, para que la información sea más legible. Esto lo podemos hacer de diferentes maneras. La primera es utilizar el parámetro «–output-delimiter», como se ve en el ejemplo:
1 | cut -d ":" -f 4,5 --output-delimiter=$'\t' ejercicio-cut.txt |
Mediante «\t» le decimos que sustituye el valor delimitador «:» por un una tabulación.
La otra opción posible es utilizar otro comando, al que le enviamos la salida standard (stdout), en este caso TR
1 | cut -d ":" -f 4,5 ejercicio-cut.txt | tr -s ':' ' ' |
Con TR indicamos que vamos a sustituir dos dos puntos, por un espacio, utilizando el parámetro «-s»
En ambos casos el resultado es similar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Carla Martínez Yoel Alonso Bernat Molina Noelia Bernabeu Arnau Silvestre Lucia Pérez Gerard Reverte Oriol López Isaac Meler Miquel Roca Carmen Grandes Andrés Romero Irene García Isabel Valle María Segovia |
Además podemos utilizar un tercera comando, en este caso SORT, que nos ordenará el listado:
1 | cut -d ":" -f 4,5 --output-delimiter=$'\t' ejercicio-cut.txt | sort |
Con el resultado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Andrés Romero Arnau Silvestre Bernat Molina Carla Martínez Carmen Grandes Gerard Reverte Irene García Isaac Meler Isabel Valle Lucia Pérez María Segovia Miquel Roca Noelia Bernabeu Oriol López Yoel Alonso |
Como último ejemplo, en esta parte, puede ser que nos interese que nos muestre información únicamente de los alumnos del «Club de Ajedrez». La podríamos obtener de la siguiente manera:
1 | cat ejercicio-cut.txt | grep ajedrez | cut -d ":" -f 4,5,6 | tr ":" " " | sort |
Obteniendo la siguiente información:
1 2 | Andrés Romero Club-de-ajedrez Isaac Meler Club-de-ajedrez |
En esta ocasión además de los comandos mencionados hasta ahora, también hemos utilizado «cat» para mostrar el contenido de un fichero, y «grep» para visualizar únicamente la información que nos interesa.
Otro uso habitual del comando CUT es que nos muestre un número de carácteres, utilizando el parámetro «-c», como vemos en el ejemplo, de la frase «En UNIX y en GNU/Linux todo es un fichero»
1 | echo "En UNIX y en GNU/Linux todo es un fichero" | cut -c 4-7 |
Con el resultado:
1 | UNIX |
Lo que hacemos es indicar, que queremos que nos muestre los carácteres del 4 al 7.
Y eso es todo, espero que os haya parecido interesante a la par de útil. Nos vamos leyendo.
Pues me pareció muy importante y útil realmente. Gracias. 👍
¿Sabrían si también hay forma de parsear datos .json desde bash? Gracias de antemano.
Gracias por la info, siguen siendo totalmente válidos en el año 2021. Esto de GNU es para largo plazo la inversión en el aprendizaje.
Tengo una duda, si yo tengo una columna donde tengo los valores separados por espacios y quiero que coja ambos valores como la haria usted.
Teniendo en cuenta esta columna de ejemplo:
Usuarios edad
Marc Lopez 20
Joan Pol 21
Marc 22
Si yo quiero sacar el primer valor de la primera columa que seria Marc Lopez.