Encontre caracteres no arquivo

2

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?

    
por Elijah 19.09.2014 / 18:01

2 respostas

2

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
    
por 19.09.2014 / 18:09
1

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:

  1. perl

    perl -pe ' /x/ && /y.*y/ || next' file
    
  2. awk

    awk '/x/ && /y.*y/' file
    

Qualquer outra coisa em que eu possa pensar teria que usar a abordagem tripla de @jofel.

    
por 19.09.2014 / 18:24