O comando “grep” no Linux é uma ferramenta de linha de comando usada para buscar e filtrar texto em arquivos ou saída de comandos. Ele permite pesquisar padrões de texto usando expressões regulares e exibir as linhas que correspondem aos padrões especificados. Além disso, o comando “grep” oferece várias opções para personalizar a pesquisa, como ignorar maiúsculas e minúsculas, mostrar apenas o número da linha correspondente ou excluir linhas que correspondam a um determinado padrão. É uma ferramenta poderosa para análise de arquivos e processamento de texto no Linux.
grep possui opções equivalentes aos operadores OR e NOT. Não há operador grep AND. Mas você pode simular AND usando padrões(pattern). Os exemplos mencionados abaixo ajudarão você a entender como usar OR, AND e NOT no comando grep do Linux.
Grep com operador OR
o caractere pipe, ou barra vertical(|), significa o operador or para o grep.
Para filtrarmos linhas contendo 8080 ou 443, podemos usar “grep -E” ou “egrep” da seguinte forma,
grep -E '8080|443' /etc/services
Exemplo,
root@debian11:~# grep -E '8080|443' /etc/services https 443/tcp # http protocol over TLS/SSL https 443/udp # HTTP/3 http-alt 8080/tcp webcache # WWW caching service
root@debian11:~# egrep '8080|443' /etc/services https 443/tcp # http protocol over TLS/SSL https 443/udp # HTTP/3 http-alt 8080/tcp webcache # WWW caching service
Grep com operador AND
Não há operador AND no grep. Mas você pode simular AND usando a opção grep -E ou egrep com “.*”
O exemplo a seguir irá grep todas as linhas que contêm “http” e “tcp” (na mesma ordem).
egrep 'http.*tcp' /etc/services
Exemplo,
root@debian11:~# egrep 'http.*tcp' /etc/services http 80/tcp www # WorldWideWeb HTTP https 443/tcp # http protocol over TLS/SSL http-alt 8080/tcp webcache # WWW caching service
Usando Mais de um GREP
Você também pode usar vários comandos grep separados por canal para simular o cenário AND.
root@debian11:~# egrep 'http' /etc/services | egrep 'tcp' http 80/tcp www # WorldWideWeb HTTP https 443/tcp # http protocol over TLS/SSL http-alt 8080/tcp webcache # WWW caching service
Usando GREP com NOT
Usando grep -v você pode simular as condições NOT. A opção -v é para correspondência invertida. ou seja, corresponde a todas as linhas, exceto o padrão fornecido.
Abaixo eu quero exibir todas as linhas que não contenha “tcp”
grep -v 'tcp' /etc/services