No se porqué no me extraña escribir esto, quizá sea porque es algo familiar, un hábito o un deja-vu quizá, lo cierto es que no pude evitar ese palpitante sentir cuando vi “kernel panic” en la terminal del cluster de procesamiento paralelo, ahora comprendo que hay ciertos comandos que merecen de mucho cuidado, ésta es una guía de cómo realizar un kernel panic en una sola línea:
#find / -iname "*Patron1*" | grep "*Patron2*"
Ahora viene la explicación, la forma de trabajar de las expresiones regulares es por comparación de patrones, se compara cada parte del patrón que se desea buscar con el contenido de un archivo, la salida de un comando, y en general con cualquier secuencia de caracteres. Podemos ver el funcionamiento de las expresiones regulares a manera de diagrama de la siguiente forma:

Se compara caracter por caracter y si en algun momento la comparación devuelve un valor falso, se continúa la comparación en el siguiente caracter del texto comparado y con el inicio de la expresión regular dada.
Una parte muy importante de las expresiones regulares son los caracteres especiales, cada uno tiene una función muy particular y en general nos sirven para hacernos la vida mas fácil. El caracter * encuentra coincidencias del caracter que le precede 0 o más veces en la cadena, entonces, si tenemos /valor*/ pueden caer los valores valorrrrrrr valorr valor, es ahora cuando nos podemos dar cuenta de la cantidad de posibilidades que existen al escribir “*patron1*”, y más si a ese primer patrón se le hace un segundo filtro con “*patron2*”.
El sistema gasta una cantidad impresionante de recursos para satisfacer la demanda del find, comienza a hacer swapping, se termina el swap y finalmente se colapsa.


