我試圖進行搜索的三個條件採用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中,而不是或 –