fbpx

Vamos falar sério. Tirem as crianças da sala. Se você não sabe um tiquim de expressões regulares, você não sabe Linux ainda. É igual ter um Iate para andar na piscina de casa.

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 a Z) e números podem formar uma sequência, uma expressão que o shell e editores de texto podem entender e buscar.

As expressões regulares são úteis para buscar ou validar textos variáveis como:

  • Número de endereço IP;
  • Endereço de e-mail;
  • Endereço de Internet (URL);
  • Dados na coluna em um texto;
  • Dados que estão entre <tags></tags> de uma linguagem, como o HTML;
  • Número de CNPJ, RG, CPF etc.;
  • Data e Horário.

Vários editores de texto e linguagens de programação oferecem suporte a expressões regulares. As ferramentas importantes que trabalham com este recurso para a prova CompTIA Linux+ são o grep e o sed.

Comando grep

Uso:

$ grep [opções] expressão-regular arquivos

O comando grep é largamente usado no dia a dia das tarefas administrativas em Linux.

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 o redirecionamento da saída de outro processo.

Se o grep receber mais de um arquivo ou um wildcard como argumento para efetuar a sua busca, ele vai indicar o nome do arquivo seguido de dois pontos e a linha encontrada.

Suas opções mais frequentes são:

  • -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 em maiúsculas ou minúsculas;
  • -v: Mostra todas as linhas do arquivo procurado menos as ocorrências encontradas. Tem o efeito inverso;
  • -n: Mostra, além do texto das linhas encontradas, o número das linhas dentro dos arquivos;
  • -B n: Mostra n linhas antes da linha encontrada;
  • -A n: Mostra n linhas depois da linha encontrada.

Exemplos:

$ grep uira /etc/passwd

uira:x:500:100:uira:/home/uira:/bin/bash

Procura a palavra uira no arquivo /etc/passwd.

$ grep ‘^u’ /etc/passwd

uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash

uira:x:500:100:uira:/home/uira:/bin/bash

Procura todas as linhas começadas com a letra u no arquivo /etc/passwd. O acento circunflexo simboliza o início de uma linha.

$ grep ‘false$’ /etc/passwd

mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false

wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false

Procura todas as linhas terminadas com a palavra false. O símbolo $ representa o fim de uma linha.

$ grep ‘^[aeiou]’ /etc/passwd

uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash

at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash

uira:x:500:100:uira:/home/uira:/bin/bash

alias:x:501:1000::/var/qmail:/bin/false

No shell, sempre utilize ‘aspas simples’ quando você for utilizar expressões regulares.

Procura todas as linhas que começam com as vogais. A expressão regular chamada lista procura qualquer um dos caracteres dentro do colchete. Note que a lista somente procura por apenas um caractere, por maior que ela seja.

$ grep ‘^.[aeiou]’ /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/bash

news:x:9:13:News system:/etc/news:/bin/bash

uira:x:500:100:uira:/home/uira:/bin/bash

Procura por todas as linhas em que o primeiro caracter seja qualquer um e o segundo caracter seja uma vogal. O ponto final na expressão regular simboliza “um caractere qualquer”.

$ grep ‘[0-9][0-9][0-9][0-9]’ /etc/passwd

squid:x:31:65534:WWW-proxy squid:/var/cache/squid:/bin/false

nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash

alias:x:501:1000::/var/qmail:/bin/false

qmaild:x:502:1000::/var/qmail:/bin/false

Procura por linhas que contenham uma sequência de quatro números consecutivos.

$ cat * | grep security

Procura em todos os arquivos em um diretório a ocorrência da palavra security.

Comando egrep

Uso:

$ egrep [opções] expressão-regular arquivos

O comando egrep é muito parecido com o grep, mas ele suporta expressões regulares com os metacaracteres +,?, | e ().

Comando fgrep

Uso:

$ fgrep [opções] chave-procura arquivos

O comando fgrep também é parecido com o grep, mas ele não suporta expressões regulares, procurando somente uma chave de busca ou um texto nos arquivos. Por este motivo, é mais rápido que o grep, mas menos versátil.

Comando sed

Uso:

$ sed [opções] {script}

O comando sed é um editor de textos simples utilizado para fazer pequenas transformações no conteúdo dos arquivos.

O sed recebe um texto de um ou mais arquivos passados como argumento na linha de comando e o transforma enviando a modificação para a saída padrão (monitor de vídeo).

Se quisermos que o sed realmente altere o conteúdo do arquivo é necessário utilizarmos o redirecionador maior-que “>” para um outro arquivo qualquer e depois copiarmos. A opção “-i extensão” também possibilita editar diretamente o arquivo e salvando uma cópia de segurança com a extensão indicada.

$ sed ‘s/\/usr\/local\/bin/\/usr\/bin/’ texto.txt > textonovo.txt

Você pode optar por utilizar o –i, de forma que o sed irá alterar o texto.txt e manter um backup em texto.txtold:

$ sed –i old ‘s/\/usr\/local\/bin/\/usr\/bin/’ texto.txt

Troca a sequência /usr/local/bin por /usr/bin no arquivo texto.txt. Observe que as contra-barras (\) dizem para o interpretador de expressões regulares que o caractere logo em seguida deve ser entendido na sua forma literal e não um símbolo de expressão regular.

$ sed ‘s/uira/carla/’ /etc/passwd

Troca o nome uira pelo nome carla no arquivo /etc/passwd

Resumo das Expressões Regulares

Observe na tabela os principais símbolos que podem ser combinados para formar expressões regulares complexas:

TABELA – Expressões Regulares

Símbolo Descrição
Aspas simples são utilizadas para delimitar o texto dentro delas como caracteres literais não interpretando nenhum caractere que estiver dentro delas como metacaractere.
Aspas duplas são utilizadas para delimitar o texto dentro delas como caracteres literais exceto os sinais “$” e “\”.
\ A contrabarra é utilizada para informar que o caractere imediatamente após deve ser interpretado como literal.
^ O acento circunflexo é utilizado para indicar o início de uma linha.
$ O cifrão é utilizado para indicar o final de uma linha.
[aeiou] Uma sequência de caracteres dentro de colchetes é interpretada como todos os caracteres são válidos para a busca.
[a-z] O sinal menos indica que qualquer caractere entre a letra a e a letra z são válidos.
[^abc] Indica que qualquer caractere menos as letras a, b, c são válidos na busca.
/palavra/ Indica que a palavra procurada deverá estar separada por espaços na esquerda e na direita.
[0-9] Indica que qualquer número de zero a nove é válido para a busca.
. O ponto final indica qualquer caractere menos uma linha em branco.

Exemplos:

Para procurar as linhas iniciadas com “Nov 10”:

$ grep “^Nov 10” messages

Nov 10 01:12:55 gs123 ntpd[2241]: time reset +0.177479 s

Nov 10 01:17:17 gs123 ntpd[2241]: synchronized to LOCAL(0), stratum 10

Nov 10 01:18:49 gs123 ntpd[2241]: synchronized to 15.1.13.13, stratum 3

Para procurar as linhas terminadas com “terminating.”:

$ grep “terminating.$” messages

Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.

Oct 28 06:29:54 cloneme kernel: Kernel log daemon terminating.

Para contar as linhas em branco no meulog.log, utilizamos o “^$”:

$ grep -c  “^$” meulog.log

meulog.log:3

Para buscar todas as ocorrências “.ola” de um arquivo:

$ grep “.ola” arquivo

Mola

Cola

Tola

Hola

regular_expressions_cheat_sheet Expressões Regulares no Linux

Quer ir além? Inscreva-se para ter acesso a todos os cursos, incluindo LPIC-1 e LPIC 2

Aqui você tem tudo para você ter sucesso nas provas de LPI e CompTIA

Quer saber se uma certificação vale a pena ? Saiba porque os salários são bons, e porque as empresas estão procurando profissionais de Linux.

Você vai ententer que os benefícios superam de longe o sacrifício.

E se você já se decidiu, veja nosso Guia de Certificação.

E se quer saber onde fazer as provas, consulte a lista de cidade.

Se quiser saber o idioma das provas, veja esse post.

Aprenda muito mais sobre Linux em nosso curso online. Você pode fazer a matrícula aqui com trial de 7 dias grátis. Se você já tem uma conta, pode acessar aqui.

Gostou? Compartilhe 🙂

Expressões Regulares no Linux
Classificado como:                    

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.