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





Я не знаю элегантных альтернатив синтаксису {4,}, но если он не работает в желаемой вами среде, вы можете прибегнуть к этой уродливой хитрости:
size='0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+
Надеюсь это поможет!
Адам
хороший - уродливый хакер сработал отлично, и это то, что важно, не так ли? Для меня приятно было изучить новый инструмент, а не писать еще одно приложение C!
Не забывайте последний апостроф.
'
Фактически, вы можете использовать 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
Это распечатает совпадающие строки.
Это не «awk»; это GNU 'gawk', но это не единственная версия. Сказав это, в Windows awk, скорее всего, от GNU, тем более что это был принятый ответ, но он не был автоматическим (я считаю, что у MKS есть версия awk).
Учитывая повсеместное распространение утилит GNU, я подумал, что это, по крайней мере, хорошее место для начала. И поскольку это сработало, похоже, мое предположение было правильным. ;-)
Если ответ @adamalex сработал, вы должны пометить его как правильный, как для его пользы, так и для следующего человека, которому нужен ответ на этот вопрос.