Pular para o conteúdo principal
Módulo 3 · Lição 2 de 27/11 no curso~15 min
Lições do módulo (2/2)

Pipelines e filtros (grep e |)

Um dos recursos mais poderosos da linha de comando do Linux é a capacidade de conectar diferentes comandos para que a saída de um se torne a entrada do próximo. Essa técnica é realizada usando pipelines e geralmente é combinada com o comando de filtragem de texto grep.


Filtrando texto: grep

O comando grep (Impressão de expressão regular global) procura uma sequência específica de texto em um ou mais arquivos e imprime as linhas correspondentes:

Bash
grep "string" [file_name]

Opções úteis para grep

  • grep -i "error" server.log: Executa uma pesquisa sem distinção entre maiúsculas e minúsculas (ignora a diferença entre letras maiúsculas e minúsculas, encontrando "Erro", "erro" ou "ERRO").
  • grep -n "connection" server.log: Exibe o número da linha junto com a linha correspondente.
  • grep -v "INFO" server.log: Inverte a pesquisa, exibindo apenas as linhas que não contêm a palavra-chave especificada.

Comandos de encadeamento: o pipeline |

O operador pipeline é representado pela barra vertical |. Ele envia a saída padrão do comando à esquerda diretamente para a entrada padrão do comando à direita:

Bash
[command1] | [command2]

Por exemplo, se um arquivo de log for enorme e você quiser pesquisar uma palavra específica sem imprimir o arquivo inteiro, você pode combinar cat e grep:

Bash
cat logs/server.log | grep ERROR

Isso lê todo o arquivo server.log com cat, mas em vez de imprimi-lo na tela, canaliza o fluxo para grep, que filtra e exibe apenas as linhas que contêm a palavra "ERROR".


Exemplos de uso e erros comuns

Se você procurar por uma palavra minúscula (por exemplo, "post") em um arquivo que a contém apenas em letras maiúsculas (por exemplo, "POST"), grep não retornará nada:

Bash
grep "post" logs/access.log
# Output: (no results, search is case-sensitive by default)

Para encontrar a linha independentemente de sua caixa, use o sinalizador -i:

Bash
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234

Se o arquivo especificado não existir, grep retornará um erro:

Bash
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directory

Experimente você mesmo

Exercício 1: Procure erros em arquivos de log

Exercício#linux.m3.l2.e1
Tentativas: 0Carregando…

Filtre o arquivo 'logs/server.log' para extrair e exibir apenas as linhas que contêm a palavra 'ERROR' (diferencia maiúsculas de minúsculas).

Carregando editor…
Mostrar dica

Use o comando grep seguido da palavra a ser pesquisada e do caminho do arquivo.

Solução disponível após 3 tentativas

Exercício 2: Pipelines e filtros

Exercício#linux.m3.l2.e2
Tentativas: 0Carregando…

Use o comando cat para ler o arquivo 'logs/server.log' e canalize (|) sua saída para o comando grep para filtrar e imprimir apenas as linhas que contêm a palavra 'WARNING'.

Carregando editor…
Mostrar dica

Conecte cat logs/server.log ao grep WARNING usando o pipe '|' personagem.

Solução disponível após 3 tentativas

Exercício 3: pesquisa sem distinção entre maiúsculas e minúsculas

Exercício#linux.m3.l2.e3
Tentativas: 0Carregando…

Pesquise todas as linhas que contêm a palavra 'post' (maiúsculas ou minúsculas) no arquivo 'logs/access.log' usando o sinalizador grep apropriado.

Carregando editor…
Mostrar dica

Use grep com a opção -i para ignorar a distinção entre maiúsculas e minúsculas.

Solução disponível após 3 tentativas