31  Filtrado de texto (grep, cut, sort, uniq, wc)

Fecha: 06 de octubre, 2026

Veamos ahora los comandos más usados en pipelines o tuberías de filtrado de texto en acción, haciendo uso de sólo algunas de las opciones más frecuentes listados en la sección anterior.

Importante

La filosofía de un pipeline o tubería en Bash es que la salida de un comando se convierte en la entrada del siguiente mediante | (pipe).

Al final de esta clase podrás leer comandos como estos:

grep "Aprobado" calificaciones.txt | cut -d',' -f2 | sort | uniq -c | sort -nr

No necesariamente memorizarlo de golpe, sino entender qué aporta cada etapa:

Comando ¿Para qué sirve?
grep Buscar patrones en texto
cut Extraer columnas o campos
sort Ordenar líneas
uniq Eliminar/contar duplicados
wc Contar líneas, palabras y caracteres

Podemos crear 3 archivos:

Ubicate en la carpeta matematicos y crea una carpeta llamada ejercicios

  1. El archivo nombres.txt:
echo -e "Sofía\nCarlos\nAna\nMiguel\nElena\nDiego\nBeatriz\nFernando\nLaura\nJorge" > ejercicios/nombres.txt
  1. El archivo numeros.txt:
echo -e "42\n7\n100\n23\n5\n81\n16\n3\n55\n12" > ejercicios/numeros.txt
  1. El archivo datos.txt:
echo -e "Ana 85\nLuis 72\nMaría 94\nCarlos 68\nSofía 91\nDiego 77\nElena 88\nPablo 63" > ejercicios/datos.txt
  1. El archivo temas.txt:
echo -e "Álgebra\nCálculo\nÁlgebra\nGeometría\nCálculo\nÁlgebra\nEstadística" > ejercicios/temas.txt
  1. El archivo alumnos.txt:
echo -e "Ana:85:Álgebra\nLuis:72:Cálculo\nMaría:94:Estadística\nCarlos:68:Geometría\nSofía:91:Cálculo" > ejercicios/alumnos.txt

31.1 Repaso de grep - Buscar patrones en texto

Sintaxis:

grep [opciones] "patrón" archivo
Argumento Descripción Ejemplo
grep ":[9][0-9]:" alumnos.txt
-i Ignora mayúsculas y minúsculas
grep -i "carlos" nombres.txt
-n Muestra el número de línea
grep -n "Miguel" nombres.txt
-c Cuenta las líneas que coinciden
grep -c "Cálculo"alumnos.txt
-v Muestra líneas que NO coinciden
grep -v "a" nombres.txt
grep -v "Cálculo" alumnos.txt
-w Coincidencia de palabra completa
grep -w "Cálculo" alumnos.txt
-A n Muestra n líneas después del match
grep -A 2 "Álgebra" alumnos.txt

Durante la clase de “Encontrar patrones con grep” repasamos la siguiente infografía y realizamos algunos ejercicios.

Infografía de grep - creada con ChatGPT

31.2 sort - Ordenar líneas de texto

Sintaxis:

sort [opciones] archivo.txt
Argumento Descripción Ejemplo
Orden alfabético
sort nombres.txt
sort temas.txt
-n Ordena numéricamente
sort -n numeros.txt
-r Orden inverso (descendente)
sort -r numeros.txt
-k Ordena por columna específica
sort -k2 datos.txt
sort -k2nr datos.txt
-u Elimina duplicados mientras ordena
sort -u temas.txt
-t Define separador de campos/columnas
sort -t":" -k2n alumnos.txt
sort -t":" -k3 alumnos.txt

Imagen creada con ChatGPT.

31.3 uniq - Identifica y filtra líneas repetidas

Sintaxis:

uniq [opciones] archivo.txt
Argumento Descripción Ejemplo
Ordena y elimina duplicado
sort temas.txt | uniq
-c Cuenta ocurrencias de cada línea
sort datos.txt | uniq -c
-d Muestra solo líneas duplicadas
sort datos.txt | uniq -d
-u Muestra solo líneas únicas
sort datos.txt | uniq -u

Imagen creada con ChatGPT.

31.4 wc - Cuenta líneas, palabras y caracteres

Sintaxis:

wc [opciones] archivo.txt
Argumento Descripción Ejemplo
Muestra líneas, palabras, bytes
wc archivo.txt
-l Cuenta líneas
wc -l archivo.txt
wc -l *.txt
-w Cuenta palabras
wc -w archivo.txt
-c Cuenta bytes
wc -c archivo.txt
-w Cuenta caracteres
wc -w archivo.txt

Imagen creada con ChatGPT

31.5 cut - Buscar patrones en texto

Aquí vamos a partir de ¿Qué hago si no quiero toda la línea, sino solamente una columna de un archivo?

Sintaxis:

cut [opciones] archivo.txt
Argumento Descripción Ejemplo
-c Extrae caracteres por posición (ej: -c1-5)
cut -c1-2 archivo.txt
-f Extrae campos específicos (ej: -f1,3)
cut -f1,3 -d: alumnos.txt
-d Define separador de campos (default: tabulación)
cut -f2 -d" " datos.txt

Imagen creada con ChatGPT.

31.6 Ejercicio integrador: grep, cut, sort, uniq y wc

NotaEjercicio 10

Instrucciones

  1. Crea el archivo materias.txt ejercutando el siguiente comando:

    echo -e "Álgebra Lineal:8:1\nCálculo Diferencial:10:1\nGeometría Analítica:8:1\nProbabilidad:6:3\nEstadística:6:3\nEcuaciones Diferenciales:8:4\nÁlgebra Abstracta:8:5\nTopología:6:6\nAnálisis Real:8:6\nProbabilidad:6:3" > ejercicios/BASH/materias.txt

    Columna 1: materias, Columna 2: créditos, Columna 3: semestre.

  2. Mostrar todas las materias que contienen la palabra Álgebra.

  3. Mostrar todas las materias de sexto semestre.

  4. Contar cuántas materias tienen 8 créditos.

  5. Mostrar únicamente los nombres de las materias.

  6. Mostrar únicamente los créditos.

  7. Ordenar las materias alfabéticamente.

  8. Ordenar los créditos de menor a mayor.

  9. Mostrar los semestres sin repetir.

  10. Contar cuántas materias hay por semestre.

  11. ¿Cuántas materias hay por número de créditos?

  12. ¿Cuál es el número de créditos más frecuente?

2. grep "Álgebra" ejercicios/BASH/materias.txt
3. grep ":6$" ejercicios/BASH/materias.txt
4. grep ":8:" ejercicios/BASH/materias.txt | wc -l
5. cut -d":" -f1 ejercicios/BASH/materias.txt
6. cut -d":" -f2 ejercicios/BASH/materias.txt
7. cut -d":" -f1 ejercicios/BASH/materias.txt | sort
8. cut -d":" -f2 ejercicios/BASH/materias.txt | sort -n
9. cut -d":" -f3 ejercicios/BASH/materias.txt | sort | uniq
10. cut -d":" -f3 ejercicios/BASH/materias.txt | sort | uniq -c
11. cut -d":" -f2 ejercicios/BASH/materias.txt | sort | uniq -c
12. cut -d":" -f2 ejercicios/BASH/materias.txt | sort | uniq -c | sort -nr | head -1

31.7 Referencias