Conheça o fórum, democrático e de qualidade.

Linux: procurando com o comando grep

O grep é um software livre (código-fonte aberto e gratuito) da suíte de aplicativos da Free Software Fundation (FSF) destinado à busca de padrões (expressões regulares comuns, extendidas e estilo Perl) ou textos simples no conteúdo de arquivos ou da entrada padrão (stdin), como a maioria dos aplicativos não-gráficos da FSF. Todas as distribuições Linux e o sistema operacional FreeBSD o incluem por padrão.

Este artigo lhe fornecerá apenas uma orientação básica. Caso deseje se tornar um especialista, consulte os seguintes livros: Practical Guide to Linux Commands, Editors, and Shell Programming, Linux Command Line and Shell Scripting Bible e Mastering Regular Expressions.

Apesar da localização de termos com o aplicativo grep ser bastante simples, alguns de seus recursos são desconhecidos pelos usuários. Neste artigo, relembraremos alguns aspectos importantes na utilização do grep em um ambiente Linux Ubuntu 8 -  Intrepid Ibex no modo gráfico (gnome). O arquivo texto utilizado possui o seguinte conteúdo:

Executando buscas com o comando grep

Conforme a documentação oficial do grep, a sua utilização para busca em arquivos é dada pelo seguinte comando:

grep [OPÇÕES] PADRÃO [ARQUIVO...]

Como o grep também pode efetuar o processamento de texto proveniente da entrada padrão (stdin), o comando acima é equivalente a: cat ARQUIVO | grep PADRÃO.

O grep possui várias opções (consulte o man grep). Dentre as mais relevantes:

Ignorar a distinção entre letras maiúsculas e minúsculas: "grep -i"

Retonar apenas a quantidade de ocorrências encontradas: "grep -c"

Destacar expressões com cor: "grep --color"

Retornar o nome dos arquivos analisados que possuem a expressão especificada: "grep -l"

Limitar a quantidade de expressões encontradas em um único arquivo: "grep -m NUM"

Retonar os números das linhas (posição em relação ao arquivo): "grep -n"

Executar a busca em todas as pastas recursivamente: "grep -R"

Os comandos egrep, fgrep e rgrep são atalhos para os seguintes comandos, respectivamente: grep -E, grep -F e grep -r.

Expressões regulares

As expressões regulares (também conhecidas por regex) determinam um conjunto de regras de sintaxe de um importante sistema de processamento de texto. Enquanto o grep utiliza essa técnica apenas para a busca de determinado texto, os aplicativos sed e awk também podem efetuar o processamento do texto.

Essas regras podem se tornar muito complexas e até mesmo ininteligíveis em determinadas aplicações; portanto, apenas  a sua utilização com o intuito de localizar determinados padrões serão abordados (a teoria completa demandaria várias horas de estudo).

O primeiro passo para se utilizar expressões regulares é ter conhecimento da tabela de meta-caracteres (caracteres especiais):

Caractere Descrição
Posicionamento
^ Início de uma linha
$ Fim de uma linha
\< Início de uma palavra
\> Fim de uma palavra
Caracteres únicos
. Caractere qualquer único (apenas um caractere)
[...] Qualquer caractere único (apenas um caractere) incluso entre os colchetes
[^...] Qualquer caractere único (apenas um caractere) que não esteja entre os colchetes
\ Caractere de escape
Quantidade
* Qualquer quantidade (inclusive, zero) de ocorrências da expressão regular ou caractere precedente
.* Qualquer quantidade (inclusive, zero) de ocorrências da expressão regular ou caractere precedente
+ Uma ou mais ocorrências da expressão regular ou caractere precedente
{N} N ocorrências da expressão regularprecedente

Baseando-se nessa tabela, podemos encontrar as expressões "iminente" ou "eminente" através do padrão '.minente', pois o ponto combinará com 1 caractere qualquer com o comando grep  '.minente' arquivo.txt:

Entretanto, o comando acima também encontrará expressões como "wminente" ou "aminente". Para filtrar ainda mais o resultado da pesquisa, teríamos de usar uma expressão regular que combinasse apenas com as vogais "i" e "e" como o comando grep '[ie]minente' arquivo.txt:

Para encontrarmos ambas as palavras desprezando-se a caixa (letras maiúsculas ou minúsculas), devemos utilizar a opção -i (ignore case). Por exemplo, o comando grep -i '[ie]minente' arquivo.txt encontraria as palavras iminente, Iminente, Eminente ou eminente.

E caso quiséssemos encontrá-las apenas no início de uma linha, grep -i '^[ie]minente' arquivo.txt:

Ou no final de uma linha, com o comando grep -i '[ie]minente$' arquivo.txt

A aprendizagem de expressões regulares demanda muito treinamento. Experimente outros padrões em arquivos de texto cujo conteúdo já seja do seu conhecimento.

English Arabic Chinese (Simplified) Chinese (Traditional) Dutch French German Japanese Spanish

Receber informativos




Informática

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Sistemas Elétricos

  • 1
  • 2
  • 3

Eletrônica

  • 1
  • 2
  • 3
  • 4
  • 5

Comunidade Livre

Conheça nosso fórum, livre e de qualidade, clicando aqui.

Telecomunicações

  • Decibel (dB) O decibel (dB) consiste na mensuração da razão de duas potências na base logarítmica 10. Como...
  • Equação de Shannon A relação de Shannon determina a capacidade do canal C, em bits por segundo, considerando-se a existência...
  • Modulação em amplitude (AM) De acordo com outros artigos disponibilizados, a modulação consiste no deslocamento do conteúdo...
  • 1
  • 2

Contacte-nos

Encontrou um erro no site ou deseja expressar a sua opinião? Por favor, entre em contato clicando aqui.

Conhecimento Livre

Todos os códigos-fonte estão licenciados pela LGPL e todo o conteúdo pela Creative Commons License. Copyleft©2009. Nenhum direito reservado.

Fórum

Cadastre-se gratuitamente no nosso fórum, conheça nossos membros e participe da nossa comunidade.