Grep 英雄正则表达式挑战
我花了一下午的时间想弄明白,我想你们大概5分钟就知道答案了 我需要在这样的文件中列出字符串的出现情况 寻找(a-z,a-z,0-9,,-)中的(0到多个),然后是CHRIS或DAVE,然后是(a-z,a-z,0-9,,-)中的(0到多个) 对于这样的文件:Grep 英雄正则表达式挑战,grep,Grep,我花了一下午的时间想弄明白,我想你们大概5分钟就知道答案了 我需要在这样的文件中列出字符串的出现情况 寻找(a-z,a-z,0-9,,-)中的(0到多个),然后是CHRIS或DAVE,然后是(a-z,a-z,0-9,,-)中的(0到多个) 对于这样的文件: eader>fooCHRISbar</header> madeup>DAVE123 more stuff after space more stuff hereCHRISDAVE</done> blah C
eader>fooCHRISbar</header>
madeup>DAVE123 more stuff after space
more stuff hereCHRISDAVE</done>
blah CHRIS.internet.com</done>
…基本上,它是在查找CHRIS和DAVE的所有出现,包括周围的文本(一个字符、下划线或破折号,一直到<或空格或其他您需要在第二个字符类条件中添加
。这样它将匹配字符串CHRIS.INTERNET.COM
$ grep -oP '[\w-]*(?:CHRIS|DAVE)[\w.-]*' file
fooCHRISbar
DAVE123
hereCHRISDAVE
CHRIS.internet.com
如果圆点出现在
CHRIS
之前,则需要在第一个char类中添加
。grep-oP'[\w.-]*(?:CHRIS | DAVE)[\w.-]*”文件
$ grep -oP '[\w-]*(?:CHRIS|DAVE)[\w.-]*' file
fooCHRISbar
DAVE123
hereCHRISDAVE
CHRIS.internet.com