2012-03-20 84 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定期正則表達式接受。