我需要一个用于 unix grep 的单遍正则表达式,其中包含 alpha,但不包含 beta。
grep 'alpha' <> | grep -v 'beta'
请您参考如下方法:
这里的其他答案展示了一些可以扭曲不同类型的正则表达式来做到这一点的方法,尽管我认为答案确实是,一般来说,“不要这样做”。与使用您所使用的任何语言的 bool 逻辑组合两个正则表达式相比,此类正则表达式更难阅读,而且执行起来可能更慢。如果您在 unix shell 提示符下使用 grep
命令,只需将一个命令的结果通过管道传输到另一个命令即可:
grep "alpha" | grep -v "beta"
我一直使用这种构造来筛选 grep
中的过多结果。如果您知道哪个结果集会更小,请将其放在管道中第一个以获得最佳性能,因为第二个命令只需处理第一个命令的输出,而不是整个输入。