Neste artigo, mostramos como executar a pesquisa de string avançada usando Grep com expressão regular, dando a você 10 exemplos práticos em suas implementações. Muitos exemplos discutidos neste artigo têm implicações práticas, o que significa que você pode usá-los em sua programação Linux diária. Os exemplos a seguir descrevem alguns exemplos de regexp para padrões comumente pesquisados.
Ex 1: Encontre um único Afretador em um arquivo de texto
Para gerar linhas no arquivo 'livro' que contenham um caractere '$', digite:
livro $ grep '\ $'Ex 2: Encontre uma única string em um arquivo de texto
Para gerar linhas no arquivo 'livro' que contém a string '$ 14.99 ', digite:
$ grep '\ $ 14 \.Livro 99Ex 3: Encontre um único Afretador especial em um arquivo de texto
Para gerar linhas no arquivo 'livro' que contenham um caractere '\', digite:
livro $ grep '\\'Ex 4: Linhas correspondentes que começam com determinado texto
Use 'ˆ' em uma expressão regular para denotar o início de uma linha.
Para imprimir todas as linhas em '/ usr / dict / words' começando com 'pro', digite:
$ grep 'ˆpro' / usr / dict / wordsPara imprimir todas as linhas no arquivo 'livro' que começam com o texto 'no início', independentemente do caso, digite:
livro $ grep -i 'ˆno início'NOTA: Essas expressões regulares foram citadas com 'caracteres; isso ocorre porque alguns shells tratam o caractere 'ˆ' como um “metacaractere” especial
Além das pesquisas de palavras e frases, você pode usar o grep para pesquisar padrões de texto complexos chamados de expressões regulares. Uma expressão regular - ou “regexp” - é uma string de texto de caracteres especiais que especifica um definir de padrões para combinar.
Tecnicamente falando, os padrões de palavras ou frases são expressões regulares - apenas expressões muito simples. Em uma expressão regular, a maioria dos caracteres, incluindo letras e números, representam a si mesmos. Por exemplo, o padrão regexp 1 corresponde à string '1', e o padrão Garoto corresponde à string 'menino'.
Existem vários caracteres reservados chamados metacaracteres que não se representam em uma expressão regular, mas têm um significado especial que é usado para construir padrões complexos. Esses metacaracteres são os seguintes: ., *, [, ], ˆ, $ e \. É bom notar que tais metacaracteres são comuns entre quase todas as distribuições Linux comuns e especiais. Aqui está um bom artigo que cobre significados especiais dos metacaracteres e dá exemplos de seu uso.
Ex 5: Linhas correspondentes que terminam com determinado texto
Use '$' como o último caractere do texto citado para corresponder a esse texto apenas no final de uma linha. Para gerar linhas no arquivo 'indo' terminando com um ponto de exclamação, digite:
$ grep '!$ 'indoEx 6: Linhas correspondentes de um determinado comprimento
Para combinar linhas de um comprimento específico, use aquele número de '.'caracteres entre' ˆ 'e' $ '- por exemplo, para corresponder a todas as linhas com dois caracteres (ou colunas) de largura, use' ˆ ... $ 'como o regexp para pesquisar.
Para imprimir todas as linhas em '/ usr / dict / words' com exatamente três caracteres de largura, digite:
$ grep 'ˆ… $' / usr / dict / wordsPara linhas mais longas, é mais útil usar uma construção diferente: 'ˆ.\ número \ $ ', onde número é o número de linhas para combinar. Use ',' para especificar um intervalo de números.
Para imprimir todas as linhas em '/ usr / dict / words' com exatamente doze caracteres de largura, digite:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / wordsPara imprimir todas as linhas em '/ usr / dict / words' com vinte e dois ou mais caracteres de largura, digite:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / wordsEx 7: Linhas correspondentes que contêm qualquer uma das expressões regulares
Para combinar linhas que contenham qualquer um de um número de regexps, especifique cada um dos regexps para pesquisar entre os operadores de alternância ('\ |') como o regexp para pesquisar. Linhas contendo qualquer uma das expressões regulares fornecidas serão geradas.
Para produzir todas as linhas em 'playboy' que contenham os padrões 'o livro' ou 'bolo', digite:
$ grep 'o livro \ | bolo' playboyEx 8: Linhas correspondentes que contêm todas as expressões regulares
Para produzir linhas que correspondam tudo de uma série de regexps, use grep para gerar linhas contendo a primeira regexp que você deseja corresponder e canalizar a saída para um grep com a segunda regexp como um argumento. Continue adicionando tubos para pesquisas grep para todas as expressões regulares que você deseja pesquisar.
Para produzir todas as linhas na 'lista de reprodução' que contém os padrões 'costa' e 'céu', independentemente do caso, digite:
Lista de reprodução $ grep -i 'the shore' | grep -i skyEx 9: Linhas correspondentes que contêm apenas alguns caracteres
Para combinar linhas que contenham apenas determinados caracteres, use a expressão regular 'ˆ [caracteres] * $', onde os caracteres são os únicos a corresponder. Para produzir linhas em '/ usr / dict / words' que contêm apenas vogais, digite:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / wordsA opção '-i' corresponde a caracteres independentemente da caixa; então, neste exemplo, todos os caracteres de vogal são correspondidos, independentemente do caso.
Ex 10: Encontrando frases independentemente do espaçamento
Uma maneira de pesquisar uma frase que pode ocorrer com espaços extras entre as palavras, ou através de uma linha ou quebra de página, é remover todos os avanços de linha e espaços extras da entrada e, em seguida, executar o grep. Para fazer isso, canalize a entrada para tr com "\ r \ n: \> \ | -" como um argumento para a opção '-d' (removendo todas as quebras de linha da entrada); canalize isso para o filtro fmt com a opção '-u' (saída do texto com espaçamento uniforme); e canalize isso para grep com o padrão para pesquisar.
Para pesquisar as quebras de linha para a string 'ao mesmo tempo que' no arquivo 'docs', digite:
$ cat docs | tr -d '\ r \ n: \> \ |-'| fmt -u | grep 'ao mesmo tempo que'
Resumo
Neste artigo, revisamos 10 exemplos práticos de uso do comando Grep Linux para pesquisar e encontrar strings em um arquivo de texto. Ao longo do caminho, aprendemos como usar expressões regulares em conjunto com Grep para realizar pesquisas complexas em arquivos de texto. Agora você tem uma ideia melhor de quão poderosas são as funções de pesquisa do Linux.
Aqui estão recursos adicionais para aqueles interessados em aprender mais sobre a programação do Linux:
Recursos para administradores de sistema
- Guia de administração do sistema Linux - O que é o sistema operacional Linux e como ele funciona
- Guia de administração do sistema Linux - Visão geral da memória virtual do Linux e cache de buffer de disco
- Guia de administração do sistema Linux - melhores práticas para monitorar sistemas Linux
- Guia de administração do sistema Linux - melhores práticas para executar inicializações e desligamentos do Linux
- Guia de administração do sistema Linux - melhores práticas para fazer e gerenciar operações de backup
Recursos para programadores de kernel do Linux
- Como funciona o gerenciamento de memória do sistema operacional Linux
- Revisão abrangente dos processos do sistema operacional do kernel Linux
- Quais são os mecanismos por trás do gerenciamento de tarefas do kernel do Linux
Dicionário do sistema de arquivos Linux
Revisão abrangente de como funciona o sistema de arquivos e diretórios do Linux