Regex en awk y WinGrep
Pregunta
Así que estoy buscando un patrón como este:
size = '0x0'
en un archivo de registro, pero solo me interesan los tamaños grandes (4 dígitos o más). La siguiente expresión regular funciona muy bien en EditPadPro (buena herramienta, por cierto)
size = '0x [0-9a-fA-F] {4,}
Pero la misma expresión regular no funciona en awk, parece que la repetición {4,} la está arruinando. Lo mismo con WinGrep: ¿alguna idea de los gurús de expresiones regulares? Gracias!
Solución
De hecho, puede usar awk, con una advertencia.
Como se menciona en la página siguiente, necesita una opción especial de línea de comandos (--re-intervalo) para que funcione, ya que la expresión de intervalo ({4,}) no está en el estándar:
http://kansai.anesth.or.jp/gijutu/ awk / gawk / gawk_28.html
Entonces, al final, querrás algo que se vea así:
awk --re-interval "/size='0x[0-9a-fA-F]{4,}'/" thefile
Esto imprimirá las líneas que coinciden.
Otros consejos
No conozco ninguna alternativa elegante a la sintaxis {4,}, pero si no funciona en el entorno deseado, podría recurrir a este truco feo:
size='0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+
¡Espero que esto ayude!
Adam
No olvides el último apóstrofe.
'