Saltar al contenido principal

9. Manipulación de Texto en Bash

Introducción a la Manipulación de Texto

  • Descripción: Manipular texto en Bash es una habilidad esencial para cualquier administrador de sistemas o desarrollador. Los comandos de Bash permiten editar, buscar y transformar texto de manera eficiente.

echo - Imprimir Texto en la Terminal

  • Descripción: Imprime el mensaje en la terminal.
  • Comandos:
    • echo "mensaje"
    • Ejemplo:
      echo "Hola, Mundo"

cat - Concatenar y Mostrar Archivos

  • Descripción: Muestra el contenido del archivo y concatena varios archivos.
  • Comandos:
    • cat [archivo]
    • cat [archivo1] [archivo2]
    • Ejemplo:
      cat archivo.txt
      cat archivo1.txt archivo2.txt

tac - Mostrar Archivos en Orden Inverso

  • Descripción: Muestra el contenido del archivo en orden inverso.
  • Comandos:
    • tac [archivo]
    • Ejemplo:
      tac archivo.txt

more y less - Visualizar Archivos de Forma Paginada

  • Descripción: Visualiza archivos página por página.
  • Comandos:
    • more [archivo]
    • less [archivo]
    • Ejemplo:
      more archivo.txt
      less archivo.txt

head y tail - Mostrar Principio o Final de un Archivo

  • Descripción: Muestra las primeras o últimas líneas de un archivo.
  • Comandos:
    • head [archivo]
    • head -n [N] [archivo]
    • tail [archivo]
    • tail -n [N] [archivo]
    • Ejemplo:
      head archivo.txt
      head -n 5 archivo.txt
      tail archivo.txt
      tail -n 5 archivo.txt

grep - Buscar Texto en Archivos

  • Descripción: Busca patrones de texto dentro de archivos.
  • Comandos:
    • grep "patrón" [archivo]
    • grep -i "patrón" [archivo]
    • grep -r "patrón" [directorio]
    • Ejemplo:
      grep "Hola" archivo.txt
      grep -i "hola" archivo.txt
      grep -r "Hola" /home/rafa/proyectos

cut - Extraer Secciones de Líneas de Texto

  • Descripción: Extrae campos de texto delimitados.
  • Comandos:
    • cut -d "delimitador" -f [campo] [archivo]
    • Ejemplo:
      echo "nombre,edad,ciudad" | cut -d "," -f 2

sort - Ordenar Líneas de Texto

  • Descripción: Ordena las líneas de un archivo.
  • Comandos:
    • sort [archivo]
    • sort -r [archivo]
    • Ejemplo:
      sort archivo.txt
      sort -r archivo.txt

uniq - Eliminar Líneas Duplicadas

  • Descripción: Elimina o cuenta líneas duplicadas consecutivas.
  • Comandos:
    • uniq [archivo]
    • uniq -c [archivo]
    • Ejemplo:
      uniq archivo.txt
      uniq -c archivo.txt

tr - Traducir o Eliminar Caracteres

  • Descripción: Traduce o elimina caracteres en un archivo.
  • Comandos:
    • tr 'a' 'b' < [archivo]
    • tr -d 'a' < [archivo]
    • Ejemplo:
      echo "hola mundo" | tr 'a' 'o'
      echo "hola mundo" | tr -d 'o'

awk - Procesamiento de Texto Basado en Patrones

  • Descripción: Procesa y analiza texto basado en patrones.
  • Comandos:
    • awk '{print $1}' [archivo]
    • awk -F"," '{print $2}' [archivo]
    • Ejemplo:
      echo "nombre edad ciudad" | awk '{print $2}'
      echo "nombre,edad,ciudad" | awk -F"," '{print $2}'

sed - Editor de Corrientes

  • Descripción: Realiza ediciones en un flujo de texto.
  • Comandos:
    • sed 's/patrón/reemplazo/' [archivo]
    • sed -i 's/patrón/reemplazo/g' [archivo]
    • Ejemplo:
      echo "hola mundo" | sed 's/hola/adios/'
      sed -i 's/hola/adios/g' archivo.txt

Ejercicios de Manipulación de Texto en Bash

Ejercicio 1: Uso de echo y cat

1.1 Imprime "Hola, Mundo" en la terminal.

1.2 Crea un archivo llamado saludo.txt y escribe "Hola, Bash" en él.

1.3 Muestra el contenido de saludo.txt usando cat.

Ejercicio 2: Uso de head y tail

2.1 Muestra las primeras 10 líneas de saludo.txt.

2.2 Muestra las últimas 5 líneas de saludo.txt.

Ejercicio 3: Uso de grep

3.1 Busca la palabra "Hola" en saludo.txt.

3.2 Realiza una búsqueda que no distinga entre mayúsculas y minúsculas para la palabra "hola" en saludo.txt.

Ejercicio 4: Uso de cut

4.1 Crea un archivo datos.csv con el siguiente contenido:

nombre,edad,ciudad
Juan,25,Madrid
Ana,30,Barcelona

4.2 Usa cut para mostrar solo las edades de datos.csv.

Ejercicio 5: Uso de sort y uniq

5.1 Crea un archivo nombres.txt con algunos nombres repetidos.

5.2 Ordena los nombres en nombres.txt.

5.3 Elimina los nombres duplicados de nombres.txt.

Ejercicio 6: Uso de tr

6.1 Reemplaza todas las letras "a" por "o" en saludo.txt.

Ejercicio 7: Uso de awk

7.1 Muestra la primera columna de datos.csv.

7.2 Usa awk para calcular la edad promedio de las personas en datos.csv.

Ejercicio 8: Uso de sed

8.1 Reemplaza "Hola" por "Adiós" en saludo.txt.

8.2 Reemplaza globalmente "Hola" por "Adiós" en saludo.txt y guarda los cambios en el archivo.

Ejercicios con soluciones de Manipulación de Texto en Bash

Ejercicio 1: Uso de echo y cat

1.1 Imprime "Hola, Mundo" en la terminal.

  • Solución:
    echo "Hola, Mundo"

1.2 Crea un archivo llamado saludo.txt y escribe "Hola, Bash" en él.

  • Solución:
    echo "Hola, Bash" > saludo.txt

1.3 Muestra el contenido de saludo.txt usando cat.

  • Solución:
    cat saludo.txt

Ejercicio 2: Uso de head y tail

2.1 Muestra las primeras 10 líneas de saludo.txt.

  • Solución:
    head saludo.txt

2.2 Muestra las últimas 5 líneas de saludo.txt.

  • Solución:
    tail -n 5 saludo.txt

Ejercicio 3: Uso de grep

3.1 Busca la palabra "Hola" en saludo.txt.

  • Solución:
    grep "Hola" saludo.txt

3.2 Realiza una búsqueda que no distinga entre mayúsculas y minúsculas para la palabra "hola" en saludo.txt.

  • Solución:
    grep -i "hola" saludo.txt

Ejercicio 4: Uso de cut

4.1 Crea un archivo datos.csv con el siguiente contenido:

nombre,edad,ciudad
Juan,25,Madrid
Ana,30,Barcelona
  • Solución:
    echo -e "nombre,edad,ciudad\nJuan,25,Madrid\nAna,30,Barcelona" > datos.csv

4.2 Usa cut para mostrar solo las edades de datos.csv.

  • Solución:
    cut -d "," -f 2 datos.csv

Ejercicio 5: Uso de sort y uniq

5.1 Crea un archivo nombres.txt con algunos nombres repetidos.

  • Solución:
    echo -e "Juan\nAna\nPedro\nAna\nMaria\nJuan" > nombres.txt

5.2 Ordena los nombres en nombres.txt.

  • Solución:
    sort nombres.txt

5.3 Elimina los nombres duplicados de nombres.txt.

  • Solución:
    sort nombres.txt | uniq

Ejercicio 6: Uso de tr

6.1 Reemplaza todas las letras "a" por "o" en saludo.txt.

  • Solución:
    cat saludo.txt | tr 'a' 'o'

Ejercicio 7: Uso de awk

7.1 Muestra la primera columna de datos.csv.

  • Solución:
    awk -F"," '{print $1}' datos.csv

7.2 Usa awk para calcular la edad promedio de las personas en datos.csv.

  • Solución:
    awk -F"," '{sum += $2; count++} END {print sum/count}' datos.csv

Ejercicio 8: Uso de sed

8.1 Reemplaza "Hola" por "Adiós" en saludo.txt.

  • Solución:
    sed 's/Hola/Adiós/' saludo.txt

8.2 Reemplaza globalmente "Hola" por "Adiós" en saludo.txt y guarda los cambios en el archivo.

  • Solución:
    sed -i 's/Hola/Adiós/g' saludo.txt