正则表达式,grep行只包含1次出现的char

时间:2012-11-16 14:00:41

标签: regex grep bigdata

我正在寻找一个有效的正则表达式(preferably possessive),我可以使用它来从一个大文件(5Gb)中只包含一个分隔符(',')的行:

E.G

X,Y
X1,Y1,Y2
X3,Y3
X4,Y4
X5,Y5,Z6

>>> grep“???” big_file

X,Y
X3,Y3
X4,Y4

2 个答案:

答案 0 :(得分:7)

由于字符串的开始/结束标记,不应该简单^[^,]*,[^,]*$避免回溯吗?

答案 1 :(得分:1)

虽然@Rawling(这里的答案之一)是正确的,他的正则表达式是正确的,它仍然没有占有性,因此没有优化,他是正确的,不会发生回溯,但它不会有最好的性能因为占有量词不必记住任何回溯位置。如问题所附链接中所述。

以下表达式将具有占有性和优化,我将与问题中提到的grep的使用一起演示:

  

grep -E“^ [^,] * +,[^,] * + $”big_data