Você pode usar duas chamadas grep consecutivas:
grep 'x' file.txt | grep 'y.*y'
ou um com as três possibilidades:
grep -E 'x.*y.*y|y.*x.*y|y.*y.*x' file.txt
Eu preciso encontrar linhas no arquivo de texto que tenham pelo menos um x
e pelo menos dois y
s.
Eu tentei o seguinte:
grep -E "x.*y{2}" file.txt
Este método não funcionou. Existe outra maneira de fazer isso?
Se eles puderem ser encontrados em qualquer ordem, duvido que você consiga algo menor do que a resposta de @jofel. Se você pode usar outras ferramentas, aqui estão algumas opções:
perl
perl -pe ' /x/ && /y.*y/ || next' file
awk
awk '/x/ && /y.*y/' file
Qualquer outra coisa em que eu possa pensar teria que usar a abordagem tripla de @jofel.
Tags grep regular-expression