2012-03-20 69 views
2

麻烦我有一个存储四个数字的组合,以下列格式的文本文件:有使用grep和正则表达式

Num1,Num2,Num3,Num4 
Num5,Num6,Num7,Num8 
............. 

我有一大堆这样的文件和我需要的是到grep的所有文件名包含上述模式。

我构建了我的grep如下:

grep -l "{d+},{d+},{d+},{d+}" /some/path/to/file/name 

grep的终止,但不会返回任何东西。

有人可以指出我的grep语句可能会出错吗?

感谢

回答

2

这应该做你想要什么:

egrep -l '[[:digit:]]+,[[:digit:]]+,[[:digit:]]+,[[:digit:]]+' /some/path/to/file/name 
+0

太棒了!有用。你有没有机会知道我使用的语法有什么问题? – 2012-03-20 15:29:02

+2

'{d +}'并不意味着*至少有一个数字*与任何数字匹配。这将是'* d +'in * perl *类型正则表达式(grep -P)。 '[0-9] +'或'[[:digit:]] +'表示使用* extended * regexps(grep -E,egrep)相同。使用* basic * regexps(grep)可以使用'[0-9] [0-9] *'获得相同的结果。 – bmk 2012-03-20 15:43:00

+0

有道理。谢谢! – 2012-03-20 15:52:10

2

一种方法是使用正则表达式perl

grep -Pl "\d+,\d+,\d+,\d+" /some/path/to/file/name 

在你的语法d是文字。它应该是逃避那封信,但不被grep定期正则表达式接受。