Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在寻找一个有效的正则表达式(最好是所有格),我可以用它来从一个大文件(5Gb)中 grep 只包含一个分隔符(',')的行:
例如
X,Y X1,Y1,Y2 X3,Y3 X4,Y4 X5,Y5,Z6
>>> grep“???” 大文件
X,Y X3,Y3 X4,Y4
^[^,]*,[^,]*$由于字符串的开始/结束标记,不应该简单地避免回溯吗?
^[^,]*,[^,]*$
尽管@Rawling(这里的答案之一)是正确的并且他的正则表达式是正确的,但它仍然不是所有格,因此没有优化,他是正确的,不会发生回溯,但它不会具有最佳性能,因为所有格量词不必记住任何回溯位置。正如问题所附链接中所述。
以下表达式将是所有格和优化的,我将与问题中提出的 grep 一起演示:
grep -E "^[^,]*+,[^,]*+$" big_data