Foro de elhacker.net

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: class_OpenGL en 1 Diciembre 2017, 13:09 pm



Título: (Consulta) Las endemoniadas expresiones regulares
Publicado por: class_OpenGL en 1 Diciembre 2017, 13:09 pm
Hola, muy buenas, me preguntaba si podrían explicarme una expresión regular que me encontré en un Makefile:

Citar
s/$(BOARD).$(1)=\(.*\)/\1/p

$(BOARD)=mega
$(1)=build.mcu

Esa expresión la ejecuta el siguiente comando:

Citar
sed -ne "s/$(BOARD).$(1)=\(.*\)/\1/p" <ruta>

donde <ruta> es la ruta de un archivo de texto (si de paso me explican bien qué hace sed estupendo)

Muchas gracias


Título: Re: (Consulta) Las endemoniadas expresiones regulares
Publicado por: engel lex en 1 Diciembre 2017, 14:18 pm
en tal caso si necesitas explicacion o pruebas, estas paginas son utiles

https://regex101.com/ (https://regex101.com/)
https://regexr.com/ (https://regexr.com/)

sed es una aplicacion que leer un archivo (o stream) linea a linea y aplica regex


sobre los comandos la primera s implica substitución y la ultima p implica imprimir el resultado

de resto sinceramente no entiendo mucho el sentido... creo que es porque sed no parece aplicar el regex por completo (es decir, los $ deberán tener \ al igual que los parentesis, pero más adelante si los tienen)...


Título: Re: (Consulta) Las endemoniadas expresiones regulares
Publicado por: Slava_TZD en 1 Diciembre 2017, 17:10 pm
Substituye $(BOARD).$(1)= por lo que quiera que esté después del =.

Back-references and Subexpressions (https://www.gnu.org/software/sed/manual/html_node/Back_002dreferences-and-Subexpressions.html)


Título: Re: (Consulta) Las endemoniadas expresiones regulares
Publicado por: class_OpenGL en 1 Diciembre 2017, 19:24 pm
Ahhh vale entiendo. Muchas gracias a tod@s!