Expresiones Regulares en Linux: Herramientas y Ejemplos

Las expresiones regulares (regex o regexp) son una poderosa herramienta utilizada en Linux y otros sistemas operativos para buscar, extraer y manipular patrones de texto en archivos y cadenas de texto. En Linux, hay varias herramientas que admiten expresiones regulares, como 'grep', 'sed', 'awk', 'sort', entre otras. A continuación, exploraremos algunas de las expresiones regulares más útiles junto con ejemplos prácticos utilizando estas herramientas.

grep - Buscar Patrones

grep se utiliza comúnmente para buscar patrones en archivos de texto. Aquí hay algunos ejemplos:


Buscar la palabra "linux" en un archivo
Busca las palabras que terminen en "sh" en un archivo
Buscar una palabra ignorando mayúsculas y minúsculas
Buscar líneas que no contengan una palabra
Mostrar líneas que no comienzan con #
Buscar líneas que contienen "error" o "falla"
Mostrar líneas que no contienen "D", "C", "A", o "U"
Contar la cantidad de veces que aparece la palabra "linux" en un archivo y mostrar solo el resultado
Buscar de manera recursiva en archivos la palabra "sysadmin" (ignorando mayúsculas y minúsculas) y suprimir los errores
Buscar archivos en el directorio actual y subdirectorios que contienen la palabra "linux" (ignorando mayúsculas y minúsculas)
Buscar archivos que contienen la cadena "system(" y mostrar las líneas que coinciden
Buscar direcciones IP
Buscar coincidencias que contienen corchetes con contenido
Buscar coincidencias que contienen comillas con contenido
Filtrar líneas que contienen "<" o ">" y mostrarlas
Buscar líneas que comiencen con una letra mayúscula
Buscar líneas que terminen con una vocal
Buscar direcciones de correo electrónico


head y tail - Búsqueda con Contexto

grep puede mostrar líneas antes o después de un patrón:


Mostrar 2 líneas antes y después de la línea que contiene "error"
Mostrar las últimas 10 líneas de un archivo de registro
Mostrar las primeras 20 líneas de un archivo


sed - Editar Texto con Expresiones Regulares

sed es una herramienta poderosa para manipular texto con expresiones regulares:


Reemplazar todas las apariciones de "linux" con "Linux"
Reemplazar la palabra "algo" con nada en un archivo
Para borrar las líneas que contienen la palabra "contraseña" en un archivo ".zsh_history"
Eliminar líneas en blanco
Reemplazar espacios con comas en un archivo
Reemplazar comas con saltos de línea en un archivo
Eliminar espacios en blanco al principio de cada línea en un archivo
Reemplazar URLs con un enlace HTML
Eliminar comentarios de un archivo de configuración (líneas que comienzan con #)


awk - Procesamiento de Texto Basado en Columnas

awk es una herramienta versátil para procesar texto, especialmente útil para archivos con formato tabular:


Imprimir la última columna de un archivo CSV (Lo que esta después de la última coma)
Imprimir la segunda columna de un archivo delimitado por dos puntos
Concatenar la primera y segunda columnas con un espacio
Filtrar líneas que contienen la palabra "user" y el número de línea es 166186
Calcular el promedio de la tercera columna en un archivo CSV
Encontrar líneas con al menos 4 palabras


sort - Ordenar y Eliminar Duplicados

sort puede ordenar líneas de texto y eliminar duplicados. Las expresiones regulares no son necesarias para sort, pero se pueden utilizar en combinación con otras herramientas:


Ordenar un archivo y eliminar duplicados
Ordenar un archivo por la segunda columna
Ordenar y eliminar duplicados, considerando solo la primera columna
Ordenar un archivo por la tercera columna y eliminar duplicados


xargs - Procesar Lotes de Entradas

xargs permite procesar lotes de entradas. Aunque no utiliza expresiones regulares directamente, es útil en combinación con otras herramientas que lo hacen:


Eliminar archivos que contienen la palabra "temp"
Ejecutar un comando en archivos coincidentes (grep)
Eliminar archivos más antiguos que 7 días
Crear copias de seguridad de archivos que contienen la palabra "importante"
Buscar archivos que contienen la palabra "importante" y realizar una acción en cada archivo encontrado


'>' y '>>' - Redireccionamiento de Salida

  • ⋆ Redireccionar la salida estándar a un archivo (sobrescribir o crear)

El operador '>' se utiliza para redireccionar la salida estándar a un archivo. Si el archivo ya existe, se sobrescribirá; de lo contrario, se creará un nuevo archivo.
Guardar la salida del comando echo en un archivo llamado salida.txt (si el archivo no existe, se crea; si existe, se sobrescribe):

  • ⋆ Anexar la salida estándar a un archivo

El operador '>>' se utiliza para redireccionar la salida estándar y anexarla a un archivo existente sin sobrescribirlo.
Anexar la salida del comando 'date' (Fecha y hora actual) al archivo registro.txt (agrega al final del archivo sin sobrescribir):


sponge - Manipulación de Archivos Intermedia

sponge es un comando útil para evitar problemas al redirigir la salida de un comando al mismo archivo que está siendo leído. Ayuda a resolver situaciones en las que el redireccionamiento podría causar un comportamiento inesperado.


Por ejemplo, si deseas eliminar líneas duplicadas de un archivo y guardar el resultado en el mismo archivo, puedes hacerlo de la siguiente manera:
Este comando se utiliza para limpiar y filtrar el contenido del archivo /etc/hosts, eliminando líneas de comentarios (que comienzan con #) y líneas en blanco, y luego guarda el resultado en el mismo archivo /etc/hosts

Conclusión

Estos son solo algunos ejemplos de cómo las expresiones regulares se utilizan en conjunto con diversas herramientas en Linux para buscar, editar y procesar texto de manera eficiente. Las expresiones regulares son una habilidad esencial para administradores de sistemas y usuarios de Linux que trabajan con texto y datos de manera regular.