我试图进行搜索的三个条件采用AND与grep
3状态和grep的
我能够搜索b,
和ghkj
这样的:
grep -e "b,.*ghkj"
,但我无法搜索b,
和ghkj
和uuuuuu
这样的:
grep -e "b,.*ghkj.*uuuuuu"
如何创建一个3条件和搜索grep
?
我试图进行搜索的三个条件采用AND与grep
3状态和grep的
我能够搜索b,
和ghkj
这样的:
grep -e "b,.*ghkj"
,但我无法搜索b,
和ghkj
和uuuuuu
这样的:
grep -e "b,.*ghkj.*uuuuuu"
如何创建一个3条件和搜索grep
?
有一个在grep的无AND运算(或AFAIK任何正则表达式语言)
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”和“BBB”以任何顺序“CCC”。
,正是我需要做的 shell_exec('grep -E -e'。$ yeasrs。'/ var/test/test2 /'。$ name_file | grep -E -e'。$ id。'| grep -E -e'。$ id_user。'“); 不工作 –
shell不会展开用单引号括起来的变量,尝试使用''grep -E -e“$ years”“/ var/test/test2/$ name_file“| grep -E -e“$ id”| grep -E -e“$ id_user”'' –
同样的问题there'is是一个错误引号 –
很难理解你在写什么。添加一些输入样本并发布期望的结果 – RomanPerekhrest
我明白什么是问题所在,我必须等待当前建议的编辑先清除队列 –
我需要在具有三个条件的文件linux中,而不是或 –