2014-12-10 50 views
0

考虑以下grep的正则表达式多

[Settings] 
Flags=17 
InHouse=0 
PrintMode=4 
version=3.0 
Background Color=16051165 
AutoSaveMin=900000 
DefaultTemplate=Untitled.ipt 
Save template=1 

我使用grep遍历成千上万的INI文件,以查找以下:

version=3.0 

DefaultTemplate=[alphanumeric] 
下面

不会返回任何结果,我错过了什么?

版本= 3.0 [\ S \ S] * DefaultTemplate = [A-ZA-Z0-9]

+0

可能重复[如何找到跨越多个模式使用grep?](http://stackoverflow.com/questions/2686147/how-to-find-patterns-across-multiple-lines-using-grep) – Wrikken 2014-12-10 22:52:00

+0

作为一个正则表达式看起来没问题。这是一个grep问题吗?你应该使用layz量词版本,虽然'version = 3.0 [\ s \ S] *?DefaultTemplate = [A-Za-z0-9]' – sln 2014-12-10 23:06:03

回答

1

试试这个:

grep -P '(DefaultTemplate=[\w\.]+|version=[\d\.]+)' * 
+0

几乎,它的行为像一个OR而不是AND – BelgoCanadian 2014-12-10 23:00:14

+0

?我得到2条线,我不明白你的意思。 – 2014-12-10 23:03:57

+0

nvm,你已经够接近了,我可以与之合作,谢谢 – BelgoCanadian 2014-12-10 23:34:10