Regex dans awk et WinGrep
Question
Je recherche donc un motif comme celui-ci:
size = '0x0'
dans un fichier journal - mais je ne m'intéresse qu'aux grandes tailles (4 chiffres ou plus). La regex suivante fonctionne très bien dans EditPadPro (bel outil BTW)
size = '0x [0-9a-fA-F] {4,}
Mais la même expression rationnelle ne fonctionne pas dans awk - on dirait que la répétition {4,} la dérange. Même chose avec WinGrep - une idée des gourous de la regex? Merci!
La solution
Vous pouvez en fait utiliser awk, avec une mise en garde.
Comme mentionné à la page suivante, vous avez besoin d'une option de ligne de commande spéciale (--re-interval) pour le faire fonctionner, car l'expression d'intervalle (le {4,}) n'est pas dans la norme:
http://kansai.anesth.or.jp/gijutu/ awk / gawk / gawk_28.html
Donc, à la fin, vous voudrez quelque chose qui ressemble à:
awk --re-interval "/size='0x[0-9a-fA-F]{4,}'/" thefile
Ceci imprimera les lignes qui correspondent.
Autres conseils
Je ne connais pas d'alternative élégante à la syntaxe {4,}, mais si elle ne fonctionne pas dans votre environnement souhaité, vous pouvez recourir à ce hack laid:
size='0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+
J'espère que ça aide!
Adam
N'oubliez pas la dernière apostrophe.
'