3

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

例如

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

>>> grep“???” 大文件

X,Y
X3,Y3
X4,Y4
4

2 回答 2

9

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

于 2012-11-16T14:09:43.777 回答
0

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

以下表达式将是所有格和优化的,我将与问题中提出的 grep 一起演示:

grep -E "^[^,]*+,[^,]*+$" big_data

于 2012-11-16T15:30:49.030 回答