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