Regex in awk und WinGrep
Frage
Also ich bin für ein Muster wie folgt aussehen:
size = '0x0'
in einer Log-Datei - aber ich bin daran interessiert ist nur in großen Größen (4 Ziffern oder mehr). Die folgende Regex funktioniert gut in EditPadPro (nettes Tool BTW)
size = '0x [0-9a-fA-F] {4}
Aber die gleiche Regex funktioniert nicht in awk - scheint, wie die Wiederholung {4} ist es vermasselt. Das Gleiche gilt für WinGrep - jede Idee von den Regex-Gurus? Dank!
Lösung
Sie können in der Tat Gebrauch awk, mit einem Vorbehalt.
Wie auf der folgenden Seite erwähnt, benötigen Sie eine spezielle Befehlszeilenoption (--re-Intervall), um es heraus funktioniert, da das Intervall Ausdruck (die {4}) nicht im Standard ist:
http://kansai.anesth.or.jp/gijutu/ awk / gawk / gawk_28.html
Also am Ende, Sie wollen etwas, das wie folgt aussieht:
awk --re-interval "/size='0x[0-9a-fA-F]{4,}'/" thefile
Damit werden die Zeilen auszudrucken, die übereinstimmen.
Andere Tipps
Ich weiß nicht, von irgendwelchen elegante Alternativen zum {4} Syntax, aber wenn es nicht in der gewünschten Umgebung arbeiten Sie in diesem hässlichen Hack greifen konnte:
size='0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+
Hope, das hilft!
Adam
Sie die letzte Apostroph nicht vergessen.
'