使用egrep的逻辑运算符

时间:2012-01-29 17:35:00

标签: linux grep

如何使用egrep进行复杂的逻辑运算?

我可以简单地执行“egrep -v C abc.txt”来实现不是C并在abc.txt中找到它。

我可以用“egrep A. * B abc.txt”来实现,而A和C则可以在abc.txt中找到它。

但我该如何做,

A和B(不是C)

我用Google搜索但找不到合适的解决方案。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

  

我可以用“egrep A. * B abc.txt”来实现,而A和C则可以找到它   在abc.txt。

1-你的命令与“C”无关,可能是拼写错误。

2-“A. * B”也不是A和B.例如字符串“BfooA”也是A和B,但不会与你的正则表达式匹配。

A和B(不是C)可以转换为:

egrep A abc.txt|egrep B|egrep -v C

答案 1 :(得分:0)

简单解决方案:

A AND B可能看起来像cat file | egrep A | egrep B

A AND B (NOT C)可能看起来像cat file | egrep A | egrep B| egrep -v C

使用正则表达式的解决方案: A AND B表示我们正在“grepping”包含AB的行。因此,我们可以将其显示为(A.*B|B.*A),并在单egrep次调用中使用该模式,例如egrep (A.*B|B.*A) file

答案 2 :(得分:-1)

最简单的方法是将一个grep的输出传输到另一个的输入中:

egrep A.*B <file> | egrep -v C

请注意,这比“A和B”更像是“A B”。如果您需要更复杂的匹配逻辑,我建议您查看awk