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.

4 Respuestas

  1. Antonio dice:

    Pues me pareció muy importante y útil realmente. Gracias. 👍

  2. Antonio dice:

    ¿Sabrían si también hay forma de parsear datos .json desde bash? Gracias de antemano.

  3. Jimmy Olano dice:

    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.

  4. 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.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: