Hay una pequeña sabiduría informática tradicional que especifica: “Si tienes un problema y eliges resolverlo con expresiones regulares, ahora tienes realmente 2 problemas”. Esto proviene naturalmente de la percepción de que las expresiones regulares son una complicada mezcla de caracteres mágicos y vudú. Las expresiones regulares pueden permitirte lograr una lógica de programa sofisticada y sucinta de forma rápida y sencilla, pero sólo una vez que hayas descubierto realmente cómo funcionan y por qué. Prácticamente cualquier sistema Linux o Mac incluye una eficaz herramienta regex llamada grep y descubrir grep es un trabajo importante para cualquier usuario avanzado o administrador de sistemas. Hoy, exploraremos algunas de las cosas que puedes hacer con grep y cómo puede ser una de las herramientas más efectivas en tu caja de herramientas geek.
Cómo funciona
En otras palabras, el trabajo de grep es buscar a través de un bloque de entrada. Eso es bastante confuso, así que es mejor describirlo con un ejemplo. Digamos que tienes un archivo de texto llamado distros.txt que tiene una lista de distribuciones de Linux, como la que aparece a continuación.
Debian– Distribución estable para servidores
Ubuntu– Distribución de escritorio basada originalmente en Debian
Kubuntu– Utiliza el escritorio KDE en lugar de Gnome
Fedora– Continuación del sistema de escritorio libre de Red Hat
Gentoo– Un sistema Linux rápido y basado en el código fuente para usuarios profesionales
SuSE– Linux industrial propiedad de Novell
Mint– Una distro derivada de Ubuntu con software extra limitado
Grep se puede utilizar para comprobar el texto y filtrarlo para mostrar sólo las partes que desee. Si quieres ver sólo las líneas que contienen la palabra “Ubuntu”, ejecutarías el siguiente comando
grep Ubuntu distros.txt
(Su versión de grep puede o no incluir el resaltado por colores como en el ejemplo anterior)
Nivel de sensibilidad a las mayúsculas y minúsculas
Es posible que haya descubierto que nuestra última búsqueda no devolvió Kubuntu. A menos que se le informe de lo contrario, grep asumirá que usted introdujo su expresión precisamente de la manera que quería, y esto se aplica a las mayúsculas y minúsculas. Si busca “ubuntu” pero su archivo de texto está formado por “Ubuntu”, su búsqueda no descubrirá absolutamente nada. Para que la búsqueda no distinga entre mayúsculas y minúsculas, utilice el modificador -i, como en
grep-i ubuntu distros.txt
Palabra completa
Con la búsqueda anterior, usted consistió en todas las versiones en mayúsculas de la palabra “Ubuntu”. Consistió en Kubuntu debido a que contiene la palabra que usted buscó. Es posible que desee consistir sólo en la variación básica, no Kubuntu o Edubuntu, etc. Si esto es así, puede decirle a grep que busque la palabra completa simplemente pasando la alternativa -w.
grep-i ubuntu distros.txt
Exención
Así como puede utilizar grep para mostrar sólo las entradas que coinciden, también puede utilizarlo para revelar cualquier cosa QUE NO sea las entradas que coinciden. Para ampliar nuestras búsquedas anteriores, ahora podemos utilizar la opción -v para invertir nuestros resultados y mostrar sólo las líneas que no coinciden.
Comodines
Grep tiene soporte completo para los comodines cuando se comparan patrones. Cuando utilice comodines y otros caracteres únicos, debe asegurarse de que su patrón de búsqueda permanezca entre comillas, para que el shell de Linux no intente analizarlos antes de que grep pueda hacerlo. Los comodines más comunes son * para grupos de caracteres y. para representar un único carácter desconocido.
Rangos
Si los comodines son un poco demasiado amplios para usted, puede definir caracteres particulares o una variedad para que conste en su búsqueda. Los caracteres entre corchetes se incluirán en su patrón de búsqueda. Por ejemplo, si tuviera un archivo con una lista como
Artículo 1 – manzanas Artículo 2 – plátanos Artículo 3 – cocos Artículo 4 – melocotones Artículo 5 – uvas Artículo 6 – albaricoques
Puede seleccionar una variedad específica utilizando algo como
grep “Item [2-4] items.txt
Grep es una herramienta tremendamente poderosa, y aprenderla completamente puede asentar en todo tipo de formas.
La comprensión de grep es también mucho más fácil de llevar a otras herramientas de consola eficaces como sed y awk. Entre esas tres herramientas, se puede hacer una increíble cantidad de magia de consola y de scripts con mucho menos esfuerzo del que parece posible. Si eres un fanático de grep, o quieres ver otras herramientas como sed y awk cubiertas aquí, por favor deja una nota en los comentarios.