Ao concatenar os padrões?
grep -e '[Yy].*[Yy].[Ee][Ee][Ee][Ee].*[Yy].*[Yy]' first.txt
Ou você quis dizer essencialmente fazer um AND lógico dos dois padrões?
Se for o último, você precisará falsificá-lo, pois enquanto grep
possui OR incorporado ( |
) e NOT ( -v
; [^]
), ele não possui um AND interno. Uma maneira é canalizar a saída de um grep
para a outra:
grep -e '[Yy].*[Yy].[Ee][Ee]' first.txt | grep '[Ee][Ee].*[Yy].*[Yy]'
A outra maneira é procurar os dois padrões em série, em qualquer ordem, com um OU lógico (abreviado para brevidade):
grep -Ee 'pattern1.*pattern2|pattern2.*pattern1' input.txt
Acho que o primeiro é mais sucinto e mais fácil de manter.