我正在尝试搜索使用AND与grep
我可以像这样搜索b,
和ghkj
:
grep -e "b,.*ghkj"
但我无法像这样搜索b,
AND ghkj
和uuuuuu
:
grep -e "b,.*ghkj.*uuuuuu"
如何创建3条件并使用grep
进行搜索?
答案 0 :(得分:2)
grep(或任何正则表达式语言afaik)中没有AND运算符
grep -E -e 'aaa.*bbb'
匹配任何包含' aaa'然后是任意数量的字符(.*
),然后是' bbb',这会模拟AND,因为它匹配包含' aaa'和' bbb'按顺序,但它不匹配' bbbaaa'。要获得包含' aaa'和' bbb'我们可以使用OR(|
)来涵盖所有可能的情况。
grep -E -e 'aaa.*bbb|bbb.*aaa'
这个策略并没有很好地扩展到3个或更多条款,因为案例数量成倍增长。
相反,我们可以使用管道来实现AND。
grep -E -e 'aaa' file | grep -E -e 'bbb' | grep -E -e 'ccc'
file
中包含' aaa'的所有行。并输出它们。 最终输出只会是来自file
的行,其中包含' aaa' AND' bbb' AND' ccc'以任何顺序。