O que “especifica vários padrões de pesquisa” por '-e' no grep mean?

0

Do manual do grep

‘-e pattern’
‘--regexp=pattern’

This can be used to specify multiple search patterns, or to protect a pattern beginning with a ‘-’. (‘-e’ is specifi ed by POSIX.)

O que significa "especificar vários padrões de pesquisa"?

Isso significa exatamente a saída de cada linha que contém todos os padrões de pesquisa especificados por -e ? Se sim, faz o mesmo que piping vários greps, cada um dos quais corresponde a um dos padrões?

Obrigado.

    
por Tim 16.02.2017 / 06:08

3 respostas

3

Para esclarecer os comentários e respostas existentes: não, isso não funciona da maneira descrita pelo OP.

Na verdade:

grep -e foo -e bar -e baz myfile

imprime as linhas que contêm foo ou bar ou baz .

grep foo myfile | grep bar | grep baz

imprime as linhas que contêm foo e bar e baz (não necessariamente nesta ordem).

    
por 14.08.2017 / 15:57
2

Não, isso não significa que os padrões sejam ANDed juntos.

O que isso significa é que você pode especificar vários padrões, sem que o segundo e os padrões subseqüentes sejam interpretados como nomes de arquivos.

Considere o seguinte:

grep pattern1 file1

Simples o suficiente. Agora considere:

grep pattern1 file1 file2

E:

# This doesn't work
grep pattern1 pattern2 file1 file2
# But this does.  There's no difference that's obvious to a computer.
grep pattern1 file1 file2 file3

Você vê o problema?

Mas, com -e , você pode fazer:

grep -e pattern1 -e pattern2 file1 file2
    
por 14.08.2017 / 22:13
1

De a descrição do POSIX grep :

By default, an input line shall be selected if any pattern [...] matches any part of the line excluding the terminating <newline>.

    
por 16.02.2017 / 06:32

Tags