Neste artigo, mostramos que você executa a pesquisa de strings antecipada 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 diária do Linux. As amostras a seguir descrevem alguns exemplos regexp para padrões comumente pesquisados.
Ex 1: encontre um único fretador em um arquivo de texto
Para produzir linhas de saída no arquivo 'livro' que contêm um caractere '$', tipo:
$ GREP '\ $' livro
Ex 2: encontre uma única string em um arquivo de texto
Para produzir linhas no arquivo 'livro' que contém a string '$ 14.99 ', tipo:
$ grep '\ $ 14 \.99 'Livro
Ex 3: Encontre um único fretador especial em um arquivo de texto
Para produzir linhas no arquivo 'livro' que contêm um caractere '\', digite:
$ GREP '\\' LIVRO
Ex 4: linhas correspondentes começando com determinado texto
Use 'ˆ' em um regexp para denotar o início de uma linha.
Para produzir todas as linhas em '/usr/dict/palavras' começando com 'pro', tipo:
$ grep 'ˆpro'/usr/dict/palavras
Para produzir todas as linhas no arquivo 'livro' que começa com o texto 'no começo', independentemente do caso, tipo:
$ grep -i 'ˆ no começo' Livro
OBSERVAÇÃO: Esses regexps foram citados com os personagens; Isso ocorre porque algumas conchas tratam o personagem 'ˆ' como um "metacaracter" especial
Além de pesquisas de palavras e frases, você pode usar o Grep para procurar padrões de texto complexos chamados expressões regulares. Uma expressão regular-ou “regexp”-é uma sequência de texto de caracteres especiais que especifica um definir de padrões para combinar.
Tecnicamente falando, a palavra ou padrões de frase são expressões regulares-apenas muito simples. Em uma expressão regular, a maioria dos personagens-incluindo cartas e números se representam. Por exemplo, o padrão regexp 1 corresponde à string '1' e ao padrão garoto combina com a corda 'menino'.
Existem vários caracteres reservados chamados Metacharacters que não se representam em uma expressão regular, mas eles têm um significado especial que é usado para criar padrões complexos. Esses Metacharacters são os seguintes: ., *, [[, ], ˆ, $ e \. É bom observar que esses metacaracters são comuns entre quase todas as distribuições comuns e especiais do Linux. Aqui está um bom artigo que abrange significados especiais dos Metacharacters e dá exemplos de seu uso.
Ex 5: linhas correspondentes terminando com determinado texto
Use '$' como o último personagem do texto citado para corresponder a esse texto apenas no final de uma linha. Para produzir linhas de saída no arquivo 'indo' terminando com um ponto de exclamação, digite:
$ grep '!$ 'indo
Ex 6: linhas correspondentes de um certo comprimento
Para combinar com as linhas de um comprimento específico, use esse número de '.'Personagens entre' ˆ 'e' $ '- por exemplo, para combinar com todas as linhas que têm dois caracteres (ou colunas) de largura, use' ˆ… $ 'como o regexp para procurar por.
Para produzir todas as linhas em '/usr/dict/words' que têm exatamente três caracteres de largura, tipo:
$ grep 'ˆ… $'/usr/dict/palavras
Para linhas mais longas, é mais útil usar uma construção diferente: 'ˆ.\ número \ $ ', onde o número é o número de linhas para corresponder. Use ',' para especificar uma série de números.
Para produzir todas as linhas em '/usr/dict/words' que têm exatamente doze caracteres de largura, tipo:
$ grep 'ˆ.\ 12 \ $ '/usr/dict/palavras
Para produzir todas as linhas em '/usr/dict/words' com vinte e dois caracteres de largura, tipo:
$ grep 'ˆ.\ 22, \ $ '/usr/dict/words
Ex 7: linhas correspondentes que contêm qualquer um de alguns regexps
Para combinar linhas que contêm qualquer um de vários regexps, especifique cada um dos regexps para pesquisar entre operadores de alternância ('\ |') como o regexp para pesquisar. Linhas que contêm qualquer um dos regexps fornecidos serão emitidos.
Para produzir todas as linhas em 'playboy' que contém os padrões 'o livro' ou 'bolo', tipo:
$ grep 'o livro \ | bolo' playboy
Ex 8: linhas correspondentes que contêm todos os regexps
Para obter linhas de saída que correspondem todos De vários regexps, use o Grep para obter linhas de saída contendo o primeiro regexp que você deseja combinar e coloque a saída para um grep com o segundo regexp como argumento. Continue adicionando tubos às pesquisas de Grep por todos os regexps que você deseja pesquisar.
Para produzir todas as linhas na 'Lista de reprodução' que contém ambos os padrões 'The Shore' e 'Sky', independentemente do caso, tipo:
$ GREP -I 'The Shore' Lista de reprodução | Grep -i Sky
Ex 9: linhas correspondentes que contêm apenas certos caracteres
Para combinar com linhas que contêm apenas certos caracteres, use o regexp 'ˆ [caracteres]*$', onde os personagens são os que combinam. Para produzir linhas em '/usr/dict/palavras' que contêm apenas vogais, digite:
$ grep -i 'ˆ [aeiou]*$'/usr/dict/words
A opção '-i' corresponde aos caracteres, independentemente do caso; Então, neste exemplo, todos os caracteres de vogal são correspondidos independentemente do caso.
Ex 10: Encontrar frases, independentemente do espaçamento
Uma maneira de procurar uma frase que possa ocorrer com espaços extras entre as palavras, ou através de uma quebra de linha ou página, é remover todos os feeds de linha e espaços extras da entrada e depois grep que. Para fazer isso, pague a entrada para TR com "\ r \ n: \> \ |-" como um argumento para a opção '-d' (removendo todas as quebras de linha da entrada); tubá-lo no filtro FMT com a opção '-u' (emitindo o texto com espaçamento uniforme); e pague isso para grep com o padrão para procurar.
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'
Neste artigo, revisamos 10 exemplos práticos de usar o comando Grep Linux para pesquisar e encontrar strings em um arquivo de texto. Ao longo do caminho, aprendemos a usar expressões regulares em conjunto com o Grep para realizar pesquisas complexas nos arquivos de texto. Até agora você tem uma idéia melhor sobre como as poderosas funções de pesquisa do Linux são.
Aqui estão recursos adicionais para aqueles interessados em aprender mais sobre a programação do Linux:
Revisão abrangente de como funciona o arquivo Linux e o sistema de diretórios