Регулярное выражение в awk и WinGrep
Вопрос
Итак, я ищу такой шаблон:
размер = '0x0'
в файле журнала - но меня интересуют только большие размеры (4 цифры и более).Следующее регулярное выражение отлично работает в EditPadPro (кстати, хороший инструмент)
размер = '0x[0-9a-fA-F]{4,}
Но то же самое регулярное выражение не работает в awk - похоже, повторение {4,} все портит.То же самое и с WinGrep – есть идеи от гуру регулярных выражений?Спасибо!
Решение
На самом деле вы можете использовать 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,}, но если он не работает в нужной вам среде, вы можете прибегнуть к этому уродливому хаку:
size='0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+
Надеюсь это поможет!
Адам
Не забудьте последний апостроф.
'