Ejercicios 103.2
A continuación tienes algunos ejercicios/ejemplos de autoevaluación
Actividades autoevaluación fáciles
1- Obtener la MAC del interface eth0 usando el comando ip address show
ip link show | grep -A 1 eth0 | grep ether | cut -d " " -f 6
3- Cambiar las minúsculas a mayúsculas de la palabra Hola
echo Hola | tr 'ola' 'OLA'
echo Hola | tr 'a-z' 'A-Z'
echo Hola | sed s/Hola/HOLA/
4- Hacer un cifrado Cesar de desplazamiento de letras
echo "estaesmipassphrase" | tr "a-z" "d-az-h"
echo "estaesmipassphrase" | tr "abcdefghijklmnoprstuvxyz" "efghijklmnoprstuvxyzabcd"
#Luego se puede hacer a la inversa para descifrar
5- Mostrar el contenido de /etc/passwd
sustituyendo los dos puntos “:” por espacios
cat /etc/passwd | tr ':' ' '
sed -e 's/:/ /g' /etc/passwd
6- Líneas que contiene la cadena de caracteres admin
en el fichero /etc/passwd
grep admin /etc/passwd
10- Muestra el nombre de usuario, el UID y el shell del usuario pue
grep pue /etc/passwd | cut -d ":" -f1,3,7
12- Número de usuarios del sistema que utilizan /bin/bash
como shell
grep -c bash$ /etc/passwd
grep bash$ /etc/passwd | wc -l
grep -c '/bin/bash' /etc/passwd
16- Buscar todas las palabras que comiencen por a en el archivo /etc/passwd
grep -o '\ba\w*' /etc/passwd
Recuerda que:
\b
: Representa un límite de palabra, asegurando que la coincidencia sea al principio de una palabra.a
: Es la letra con la que debe comenzar la palabra.\w*
: Coincide con cualquier número de caracteres alfanuméricos (letras y números), incluyendo cero caracteres.
17- Mostrar por pantalla las líneas que contienen comentarios en el archivo grub.cfg
sudo grep '^#' /boot/grub/grub.cfg
18- Enviar a un fichero las líneas del archivo /boot/grub/grub.cfg
que no son comentarios
sudo grep -v '^#' /boot/grub/grub.cfg 1>config.txt
19- Como sacar las IPs usadas para acceder del log de seguridad
grep -o -E "([0-9]{1.3}\.){3}" /var/log/secure
Esto es mas avanzado pero lo que hace es:
-o
coge solo los valores encontrados-E
para usar REGEX[0-9]
intervalo de 0 a 9{1.3}
de una a 3 veces\.
separadas por puntos(){3}
lo que esta dentro de la expresión, repítelo tres veces
22- Muestra las líneas del fichero /etc/network/interfaces
numerándolas
cat -n /etc/network/interfaces
23- Muestra las líneas del fichero /etc/network/interfaces
numerándo sólo las líneas con contenido
cat -b /etc/network/interfaces
24- Muestra las primeras o las últimas 7 líneas del fichero /etc/passwd
head -7 /etc/passwd
tail -7 /etc/passwd
25- Muestra las primeras 3 líneas de todos los ficheros .log del directorio /var/log
head -3 /var/log/*.log
29- Muestra las últimas 20 líneas en tiempo real del archivo de log /var/log/syslog
tail -f /var/log/syslog
34- Muestra los primeros 5 caracteres en formato octal del archivo binario.dat
od -c -N 5 binario.dat
Actividades autoevaluación más dificiles
Y aquí te dejo tambien algunos ejercicios más difíciles!
1- Extraer las líneas que contienen la palabra "error" en el log /var/log/syslog, numerarlas y mostrar solo las 5 primeras líneas.
grep "error" /var/log/syslog | nl | head -n 5
2- Muestra los 10 usuarios con más procesos en ejecución, ordenados de mayor a menor.
ps aux | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head -n 10
3- Extraer los nombres de usuario del archivo /etc/passwd, ordenarlos alfabéticamente y eliminar duplicados.
cut -d: -f1 /etc/passwd | sort | uniq
4- Mostrar el número de líneas que contienen la palabra "root" en /etc/passwd.
grep "root" /etc/passwd | wc -l
5- Obtener el tercer campo del archivo datos.csv, ordenarlo numéricamente y mostrar los 5 valores más bajos.
cut -d, -f3 datos.csv | sort -n | head -n 5
6- Muestra las 10 palabras más usadas en el archivo texto.txt (ignorando mayúsculas y minúsculas).
tr ' ' '\n' < texto.txt | tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr | head -n 10
7- Extraer las líneas que contienen "ssh" en /var/log/auth.log
, mostrar solo las últimas 10 y numerarlas.
grep "ssh" /var/log/auth.log | tail -n 10 | nl
8- Descomprime un archivo archivo.bz2
, cuenta el número de líneas y muestra las primeras 5.
bzcat archivo.bz2 | wc -l | head -n 5
9- Extraer la dirección IP de las conexiones fallidas en /var/log/auth.log
y mostrar cuántas veces aparece cada una.
grep "Failed password" /var/log/auth.log | cut -d ' ' -f 11 | sort | uniq -c | sort -nr
10- Mostrar las 5 extensiones de archivo más comunes en un directorio y sus subdirectorios
find . -type f | rev | cut -d. -f1 | rev | sort | uniq -c | sort -nr | head -n 5
Caso práctico: Películas
Para los siguientes ejercicios necesitaras el data source de "/peliculas", el script para crearlas es el siguiente:
#!/bin/bash
# 📂 Creamos el directorio donde se guardarán los archivos
mkdir -p /usr/share/data/peliculas
# 📝 Lista de títulos de películas simulados
PELICULAS=("The Matrix" "Inception" "The Godfather" "Titanic" "Pulp Fiction" \
"Gladiator" "The Dark Knight" "Avatar" "Forrest Gump" "The Shawshank Redemption" \
"Fight Club" "Interstellar" "The Lord of the Rings" "The Silence of the Lambs" \
"Star Wars" "Back to the Future" "Schindler's List" "The Green Mile" "Django Unchained" "Joker")
# 🔄 Número de archivos y títulos por archivo (modificar si se necesita más datos)
NUM_ARCHIVOS=5
TITULOS_POR_ARCHIVO=15
echo "📂 Creando archivos de películas en $DIR..."
# 🔹 Genera archivos con títulos aleatorios, incluyendo algunos repetidos
for i in $(seq 1 $NUM_ARCHIVOS); do
ARCHIVO="$DIR/peliculas_$i.txt"
shuf -r -n $TITULOS_POR_ARCHIVO -e "${PELICULAS[@]}" > "$ARCHIVO"
echo "✅ Archivo generado: $ARCHIVO"
done
echo "✅ Archivos de muestra creados."
Calcula el número total de títulos que hay en todos los ficheros del directorio /usr/share/data/peliculas/
, descartando títulos repetidos
cat /usr/share/data/peliculas/* | sort | uniq | wc -l
Genera un ranking de las películas más repetidas en los archivos.
cat /usr/share/data/peliculas/*.txt | sort | uniq -c | sort -nr | head -10
Encuentra todas las películas cuyo título contenga la palabra "The".
grep -i "The" /usr/share/data/peliculas/*.txt
Encuentra todas las películas que tienen exactamente tres palabras en su título
cat /usr/share/data/peliculas/*.txt | grep -E "^[^ ]+ [^ ]+ [^ ]+$"
Cambia la palabra "Dark" por "Light" en todos los títulos de películas y guarda el resultado.
sed 's/Dark/Light/g' /usr/share/data/peliculas/*.txt > /usr/share/data/peliculas/titulos_modificados.txt
Encuentra todas las películas cuyo título empieza con la letra "S" y termina con la letra "d" (ejemplo: "Schindler’s List").
grep -E "^S.*d$" /usr/share/data/peliculas/*.txt
Caso práctico: El Quijote
Para los siguientes ejercicios necesitarás el data source de "el_quijote.txt
", para obtenerlo:
wget https://gist.githubusercontent.com/jsdario/6d6c69398cb0c73111e49f1218960f79/raw/8d4fc4548d437e2a7203a5aeeace5477f598827d/el_quijote.txt
Indica el número de veces que aparece la palabra "molino" en el fichero "el_quijote.txt
"
grep -o -w molino el_quijote.txt | wc -w
Muestra las 10 palabras más frecuentes del texto.
tr ' ' '\n' < el_quijote.txt | tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr | head -n 10
Extrae las primeras y ultimas 20 líneas del texto.
cat el_quijote.txt | head -n 20 > primeras_y_ultimas_20.txt && cat el_quijote.txt | tail -n 20 >> primeras_y_ultimas_20.txt
Enunciados con pipes más avanzados:
Muestra las 5 primeras líneas que contienen la palabra "Dulcinea" numeradas.
grep "Dulcinea" el_quijote.txt | nl | head -n 5
Muestra cuántas líneas contienen la palabra "gigante" o "molino"
grep -E "gigante|molino" el_quijote.txt | wc -l
Extrae las palabras que empiezan por "don" (como Don Quijote) y muestra las 5 más comunes.
grep -o '\<don[a-z]*' el_quijote.txt | sort | uniq -c | sort -nr | head -n 5
Extrae todas las palabras del texto, ordénalas y elimina duplicados.
tr ' ' '\n' < el_quijote.txt | sort | uniq
Cuenta cuántas veces aparece cada letra del abecedario.
tr -d '[:space:]' < el_quijote.txt | fold -w1 | sort | uniq -c | sort -nr
Divide el_quijote.txt
en fragmentos de 500 líneas cada uno.
split -l 500 el_quijote.txt quijote_parte_
Extrae las primeras palabras de cada línea y guárdalas en otro archivo.
cut -d ' ' -f 1 el_quijote.txt > primeras_palabras.txt
Muestra las líneas que contienen la palabra "Sancho" y "Quijote" al mismo tiempo.
grep "Sancho" el_quijote.txt | grep "Quijote"
Muestra las líneas que contienen exactamente 10 palabras.
grep -E -o '\b(\w+\b[[:space:]]+){10}' el_quijote.txt
Caso práctico: Empleados
Para los siguientes ejercicios necesitarás el json de "ccaa.json
", para obtenerlo:
wget -O https://analisi.transparenciacatalunya.cat/api/views/x5xm-w9x7/rows.csv?accessType=DOWNLOAD
Mostrar las líneas de un fichero que contienen la palabra BADAJOZ o HUELVA, numerando las líneas de salida
cat -n ccaa.json| grep -E 'BADAJOZ|HUELVA'
grep -n -E 'BADAJOZ|HUELVA' ccaa.json
Mostrar los ficheros que contienen la palabra TOLEDO en el directorio actual y todos sus subdirectorios
grep -r -i -w TOLEDO ./ | cut -d":" -f1 | sort | uniq
Buscar los 10 municipios con mayor superficie
expand -t 1 municipios | sort -t " " -k 3 -n -r | head -10
(...)
Last updated