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 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 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 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 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 ':' ' ' 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 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 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 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 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 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 echo "En UNIX y en GNU/Linux todo es un fichero" | cut -c 4-7

Con el resultado:

1 UNIX 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.