如何使用egrep进行复杂的逻辑运算?
我可以简单地执行“egrep -v C abc.txt”来实现不是C并在abc.txt中找到它。
我可以用“egrep A. * B abc.txt”来实现,而A和C则可以在abc.txt中找到它。
但我该如何做,
A和B(不是C)
我用Google搜索但找不到合适的解决方案。
非常感谢任何帮助!
答案 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”包含A
和B
的行。因此,我们可以将其显示为(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
。