Regex em awk e WinGrep
Pergunta
Então, eu estou procurando um padrão como este:
size = '0x0'
em um arquivo de log - mas eu só estou interessado em tamanhos grandes (4 dígitos ou mais). O seguinte regex funciona muito bem em EditPadPro (ferramenta agradável BTW)
tamanho = '0x [0-9a-fA-F] {4,}
Mas o mesmo regex não funciona no awk - parece ser a repetição {4,} é estragar tudo. Mesmo com WinGrep - qualquer ideia dos gurus regex? Obrigado!
Solução
Você pode em uso fato de awk, com uma ressalva.
Como mencionado na página seguinte, você precisa de uma opção de linha de comando especial (--re-intervalo) para torná-lo trabalhar para fora, uma vez que a expressão intervalo (o {4,}) não está no padrão:
http://kansai.anesth.or.jp/gijutu/ awk / gawk / gawk_28.html
Assim, no final, você vai querer algo que se parece com:
awk --re-interval "/size='0x[0-9a-fA-F]{4,}'/" thefile
Isto irá imprimir as linhas que jogo.
Outras dicas
Eu não sei de quaisquer alternativas elegantes para o {4,} sintaxe, mas se ele não está funcionando em seu ambiente desejado você poderia recorrer a este corte feio:
size='0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+
Espero que isso ajude!
Adam
Não se esqueça o último apóstrofo.
'