O comando grep seleciona linhas da entrada que correspondem a um padrão. Ele pode pesquisar arquivos indicados ou stdin, mostrar o contexto das correspondências, contar linhas selecionadas e comunicar por seu status de saída se encontrou algo.
Text-Fu · Lição 16
grep
Aprenda a selecionar linhas com cadeias fixas ou expressões regulares e interpretar os resultados de grep.
Correspondência de Linhas em um Arquivo
Forneça um padrão seguido de um ou mais arquivos de entrada:
$ grep 'fox' sample.txt
Por padrão, o GNU grep interpreta o padrão como uma expressão regular básica e mostra cada linha selecionada. Coloque os padrões entre aspas para impedir que espaços e metacaracteres do shell sejam interpretados antes.
Use -F quando o padrão deva ser tratado como uma cadeia fixa, não como expressão regular:
$ grep -F 'price: $5.00' products.txt
Qual comando pesquisa products.txt pelo texto literal price: $5.00 sem tratar os caracteres do padrão como sintaxe de expressão regular?
Seleção da Sintaxe do Padrão
O GNU grep oferece três modos comuns de padrão:
- padrão: expressões regulares básicas;
-E: expressões regulares estendidas, incluindo operadores como|,+e?sem barras invertidas;-F: cadeias fixas, sem operadores de expressão regular.
Âncoras como ^ e $ correspondem ao início e ao fim de uma linha. Para localizar nomes terminados no sufixo literal .txt em uma lista:
$ grep -E '\.txt$' filenames.txt
A barra invertida torna o ponto literal; um . sem escape em uma expressão regular corresponde a qualquer caractere individual.
Qual expressão regular estendida corresponde a linhas terminadas no sufixo literal .txt?
Fornecimento Seguro de Padrões
Use -e PATTERN para fornecer explicitamente um padrão. Isso é particularmente útil quando ele começa com -, pois as aspas sozinhas não impedem a interpretação como opção:
$ grep -e '-v' settings.conf
Você pode repetir -e para selecionar linhas correspondentes a qualquer padrão fornecido. Use -f patterns.txt para ler um padrão por linha de um arquivo.
Qual comando pesquisa settings.conf pelo padrão -v, em vez de interpretá-lo como uma opção?
Controle da Saída Selecionada
-i: ignora diferenças entre maiúsculas e minúsculas.-n: prefixa as linhas selecionadas com seus números.-v: seleciona as linhas que não correspondem.-c: mostra a quantidade de linhas selecionadas para cada arquivo de entrada.-o: mostra apenas cada parte correspondente não vazia, não a linha completa.
Por exemplo, conte as linhas que contêm fox, ignorando maiúsculas e minúsculas:
$ grep -ic 'fox' sample.txt
-c conta linhas selecionadas, não a quantidade total de correspondências dentro delas. Uma linha com fox fox contribui com um para a contagem. Quando você precisar especificamente das ocorrências não sobrepostas com o GNU grep, grep -o PATTERN | wc -l é um pipeline possível.
data.txt possui uma linha com error error e duas linhas sem correspondência. O que grep -c 'error' data.txt informa?
Filtragem de stdin e Pesquisa em Diretórios
Quando nenhum arquivo de entrada é indicado, grep lê stdin e se encaixa naturalmente em um pipeline:
$ env | grep '^USER='
Use -r para pesquisar recursivamente os arquivos legíveis abaixo de um diretório:
$ grep -r 'listen_port' config/
Diagnósticos como erros de permissão vão para stderr e não fazem parte da entrada pesquisada. Restrinja o caminho e compreenda as permissões em vez de elevar o acesso imediatamente.
Em generate-report | grep 'failed', qual entrada grep pesquisa?
Interpretação do Status de Saída
Em pesquisas comuns, o GNU grep retorna o status 0 quando seleciona pelo menos uma linha, 1 quando nenhuma linha é selecionada e 2 em caso de erro. Isso permite que scripts testem uma correspondência sem tratar “nenhuma correspondência” como a mesma condição de um arquivo ilegível ou padrão inválido.
Opções como -q suprimem a saída comum e param depois que uma correspondência é encontrada, sendo úteis em testes condicionais. Não deduza sucesso apenas por uma tela vazia: -q, redirecionamento, ausência de correspondência e erro podem produzir pouca ou nenhuma stdout, mas seus status são diferentes.
Para praticar pesquisas com cadeias fixas e expressões regulares, experimente estes laboratórios:
- Pesquisa de Texto com grep no Linux — Pratique pesquisas básicas, números de linha, âncoras e expressões regulares básicas e estendidas com
grep. - Comando grep do Linux: Pesquisa de Padrões — Aprenda a pesquisar e corresponder padrões em arquivos de texto e a definir padrões complexos com expressões regulares.
- Agulha no Palheiro — Aprenda a usar o poder do comando
greppara pesquisar padrões específicos, contar ocorrências, extrair valores únicos e combinar vários critérios de pesquisa em diversos arquivos de log.
Lição concluída
Você concluiu grep
Agora você sabe pesquisar textos orientados por linhas e diferenciar correspondências de erros.
Escolha a correspondência básica, estendida ou por cadeia fixa.
Coloque padrões entre aspas e use
-epara um hífen inicial.Conte linhas selecionadas sem confundi-las com ocorrências.
Filtre stdin ou pesquise recursivamente em um diretório específico.
Interprete os status de saída de correspondência, ausência de correspondência e erro.
Salve seu progresso
Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.
Criar uma conta gratuita