Regex в awk и WinGrep - PullRequest
       12

Regex в awk и WinGrep

4 голосов
/ 06 ноября 2008

Итак, я ищу такой шаблон:

size = '0x0'

в файле журнала - но меня интересуют только большие размеры (4 цифры или более). Следующее регулярное выражение прекрасно работает в EditPadPro (хороший инструмент BTW)

размер = '0x [0-9a-FA-F] {4}

Но то же самое регулярное выражение не работает в awk - похоже, повторение {4,} испортило его. То же самое с WinGrep - есть идеи от гуру регулярных выражений? Спасибо!

Ответы [ 3 ]

5 голосов
/ 06 ноября 2008

Вы можете использовать awk с оговоркой.

Как уже упоминалось на следующей странице, вам нужен специальный параметр командной строки (--re-interval), чтобы он работал, поскольку выражение интервала ({4,}) не входит в стандарт:

http://kansai.anesth.or.jp/gijutu/awk/gawk/gawk_28.html

Итак, в итоге вам понадобится что-то похожее на:

awk --re-interval "/size='0x[0-9a-fA-F]{4,}'/" thefile

Это напечатает строки, которые соответствуют.

4 голосов
/ 06 ноября 2008

Я не знаю каких-либо изящных альтернатив синтаксису {4,}, но если он не работает в желаемой среде, вы можете прибегнуть к этому безобразному хаку:

size='0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+

Надеюсь, это поможет!

Адам

0 голосов
/ 06 ноября 2008

Не забудьте последний апостроф.

'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...