Carreira Dev

27 nov, 2012

DicasLPI 103.7: Procurar em arquivos de texto usando expressões regulares – Parte 01

Publicidade

Uma expressão regular é um método formal de se especificar um padrão de texto a ser procurado em um ou mais arquivos. É uma composição de caracteres com funções especiais (metacaracteres) que, agrupados entre si com caracteres literais (de A à Z) e números, podem formar uma sequência; uma expressão que o shell e editores de texto podem entender e buscar.

O comando grep

O comando grep é largamente utilizado em tarefas administrativas. Ele filtra as linhas de um determinado arquivo procurando por uma expressão regular como padrão. O grep pode ler um ou mais arquivos que são passados como argumento ou pode receber na entrada padrão redirecionamento da saída de outro processo. Um uso comum do grep é mostrar o conteúdo de arquivos de configuração excluindo apenas as linhas que correspondem a comentários, ou seja, as linhas que começam com o caractere #. Por exemplo, fazê-lo com o arquivo /etc/yum.conf:

# grep  -v  ’^#’ /etc/yum.conf

Opções comuns na utilização do grep:

  • -c – Mostra somente a contagem das ocorrências nos arquivos e não as linhas onde as ocorrências foram encontradas;
  • -h – Mostra somente as linhas encontradas, sem a indicação do nome dos arquivos;
  • -i – Procura as ocorrências ignorando se as letras estão maiúsculas ou minúsculas;
  • -v – Mostra todas as linhas do arquivo procurado menos as ocorrências encontradas;
  • -n – Mostra, além do texto das linhas encontradas, o número das linhas dentro dos arquivos.

Exemplos:

Encontrar ludolfs no /etc/passwd:

# grep ludolfs /etc/passwd
ludolfs:x:1000:1000:ludolfs:/home/ludolfs:/bin/bash

Procurar todas as linhas iniciadas com a letra l no arquivo /etc/passwd. O acento circunflexo simboliza o início de uma linha:

# grep ‘^l’ /etc/passwd

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

ludolfs:x:1000:1000:ludolfs:/home/ludolfs:/bin/bash

Com isso, iniciamos uma nova saga dissecando  o comando grep. Nos próximos artigos iremos dar continuidade ao assunto. Até a próxima!