Filter Contents - Linux Fundamentals
linux
htb
security
Objetivo
Dominar el filtrado y procesamiento de texto en Linux usando herramientas como grep, sed, awk, cut, y tr.
Introducción
El filtrado de contenido es esencial para trabajar con archivos de configuración, logs, y resultados de comandos. Dominar estas herramientas permite manipular datos de manera eficiente.
Escenario
Necesitas: 1. Filtrar resultados de comandos 2. Extraer información específica de archivos 3. Procesar y transformar texto
Herramientas de Paginación
more
# Ver archivo página por página
more /etc/passwd
# Navegación:
# [SPACE] - Siguiente página
# [ENTER] - Siguiente línea
# [q] - Salirless
# Paginador más avanzado
less /etc/passwd
# Ventajas sobre more:
# - Navegación hacia atrás
# - Búsqueda con /
# - No limpia la terminal al salirhead y tail
# Primeras 10 líneas
head /etc/passwd
# Primeras N líneas
head -n 20 /etc/passwd
# Últimas 10 líneas
tail /etc/passwd
# Últimas N líneas
tail -n 20 /etc/passwd
# Seguir archivo en tiempo real
tail -f /var/log/syslogsort
# Ordenar alfabéticamente
sort /etc/passwd
# Ordenar numéricamente
sort -n numeros.txt
# Orden inverso
sort -r /etc/passwd
# Ordenar por columna específica
sort -k 3 -n /etc/passwd
# Eliminar duplicados
sort -u archivo.txtgrep - Filtrado por Patrones
Básico
# Buscar patrón
grep "bash" /etc/passwd
# Ignorar caso
grep -i "error" /var/log/syslog
# Mostrar números de línea
grep -n "bash" /etc/passwd
# Contar coincidencias
grep -c "bash" /etc/passwdAvanzado
# Excluir patrón
grep -v "nologin" /etc/passwd
# Búsqueda recursiva
grep -r "password" /etc/
# Expresiones regulares extendidas
grep -E "(bash|sh)" /etc/passwd
# Mostrar contexto
grep -C 3 "error" /var/log/syslog
# Solo nombres de archivo
grep -l "password" *.txtcut - Extraer Campos
# Por delimitador
cut -d":" -f1 /etc/passwd
# Múltiples campos
cut -d":" -f1,3,7 /etc/passwd
# Por posición de caracteres
cut -c 1-10 /etc/passwd
# Rango de campos
cut -d":" -f1-3 /etc/passwdtr - Transformar Caracteres
# Reemplazar caracteres
cat /etc/passwd | tr ":" " "
# Convertir a minúsculas
tr 'A-Z' 'a-z' < archivo.txt
# Eliminar caracteres
tr -d '0-9' < archivo.txt
# Comprimir caracteres repetidos
tr -s ' ' < archivo.txtcolumn - Formato Tabular
# Formatear en columnas
cat /etc/passwd | tr ":" " " | column -tawk - Procesamiento Avanzado
Básico
# Imprimir campos
awk '{print $1}' archivo.txt
# Imprimir múltiples campos
awk '{print $1, $NF}' archivo.txt
# Con delimitador
awk -F":" '{print $1}' /etc/passwdCondiciones
# Filtrar por condición
awk -F":" '$3 >= 1000 {print $1}' /etc/passwd
# Múltiples condiciones
awk -F":" '$3 >= 1000 && $7 ~ /bash/ {print $1}' /etc/passwd
# IF-ELSE
awk '{if($1 > 100) print "grande"; else print "pequeño"}' archivo.txtCálculos
# Sumar columna
awk '{sum+=$1} END {print sum}' numeros.txt
# Promedio
awk '{sum+=$1} END {print sum/NR}' numeros.txt
# Contar líneas
awk 'END {print NR}' archivo.txtsed - Editor de Streams
Reemplazo
# Primera ocurrencia por línea
sed 's/old/new/' archivo.txt
# Todas las ocurrencias
sed 's/old/new/g' archivo.txt
# En línea específica
sed '2s/old/new/' archivo.txt
# Editar archivo in-place
sed -i 's/old/new/g' archivo.txtEliminación
# Eliminar línea específica
sed '5d' archivo.txt
# Eliminar última línea
sed '$d' archivo.txt
# Eliminar líneas con patrón
sed '/patron/d' archivo.txt
# Eliminar líneas vacías
sed '/^$/d' archivo.txtwc - Contar
# Contar líneas
wc -l archivo.txt
# Contar palabras
wc -w archivo.txt
# Contar caracteres
wc -c archivo.txt
# Todo junto
wc archivo.txtCombinaciones Prácticas
Filtrar usuarios con bash
cat /etc/passwd | grep "/bin/bash" | cut -d":" -f1Formato tabular con awk
cat /etc/passwd | grep -v "nologin" | awk -F":" '{print $1, $7}' | column -tReemplazar y ordenar
cat /etc/passwd | sed 's/:/ /g' | awk '{print $1}' | sortAnálisis de logs
# Errores únicos en log
grep -i "error" /var/log/syslog | awk '{print $5}' | sort | uniq -c | sort -rnEjercicios Prácticos
Ejercicio 1: Usuarios activos
Mostrar solo los usuarios que tienen shell real (no nologin/false):
cat /etc/passwd | grep -v -E "(nologin|false)" | cut -d":" -f1Ejercicio 2: Formato tabular
Crear tabla con username, UID y shell:
cat /etc/passwd | grep -v -E "(nologin|false)" | awk -F":" '{print $1, $3, $7}' | column -tEjercicio 3: Contar servicios
Contar servicios escuchando en puertos:
ss -tlnp | grep LISTEN | wc -l¿Qué Aprendimos?
- grep: Filtrado potente con regex
- cut: Extracción de campos
- tr: Transformación de caracteres
- awk: Procesamiento avanzado
- sed: Edición de streams
- Pipes: Combinación de herramientas
Autoevaluación
- ¿Cómo filtras líneas que NO contienen un patrón?
- ¿Cómo extraes el segundo campo de un CSV?
- ¿Cómo reemplazas todas las ocurrencias de una palabra?
- ¿Cómo cuentas líneas únicas en un archivo?
- ¿Qué hace
awk -F":" '{print $1,$NF}'?