Windows awk和WinGrep中的正则表达式
所以我在寻找这样一种模式: size='0x0' 在日志文件中,但我只对大尺寸(4位或更多)感兴趣。下面的正则表达式在EditPadPro中非常有效(顺便说一句,很好的工具)Windows awk和WinGrep中的正则表达式,windows,regex,awk,grep,Windows,Regex,Awk,Grep,所以我在寻找这样一种模式: size='0x0' 在日志文件中,但我只对大尺寸(4位或更多)感兴趣。下面的正则表达式在EditPadPro中非常有效(顺便说一句,很好的工具) 但是同一个正则表达式在awk中不起作用-似乎重复{4,}把它搞砸了。WinGrep也一样-RegEx大师有什么想法吗?谢谢 我不知道有什么优雅的{4,}语法替代品,但是如果它在您想要的环境中不起作用,您可以求助于这个丑陋的黑客: size='0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-
但是同一个正则表达式在awk中不起作用-似乎重复
{4,}
把它搞砸了。WinGrep也一样-RegEx大师有什么想法吗?谢谢 我不知道有什么优雅的{4,}语法替代品,但是如果它在您想要的环境中不起作用,您可以求助于这个丑陋的黑客:
size='0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+
希望这有帮助
亚当别忘了最后一个撇号
'
事实上,您可以使用awk,但需要注意 正如在下一页中提到的,您需要一个特殊的命令行选项(--re interval)来解决这个问题,因为区间表达式({4,})不在标准中: 所以最后,你会想要一些看起来像:
awk --re-interval "/size='0x[0-9a-fA-F]{4,}'/" thefile
这将打印出匹配的行。好-丑的黑客工作得很好,这才是最重要的,对吗?对我来说,最好的事情是学习一个新工具,而不是编写另一个C应用程序!如果@adamalex-answer有效,您应该将其标记为正确,既为了他的利益,也为了下一个需要回答此问题的人。您可以使用PowerGREP而不是WinGrep,因此您将使用与EditPad Pro完全相同的正则表达式引擎。这不是“awk”;这是GNU的“gawk”,它不是唯一的版本。话虽如此,在Windows上,“awk”很可能来自GNU,特别是因为它是公认的答案,但这不是自动的(我相信MKS有一个awk版本)。考虑到GNU实用程序的普遍性,我认为这至少是一个好的起点。既然成功了,看来我的假设是对的
awk --re-interval "/size='0x[0-9a-fA-F]{4,}'/" thefile