Linux Professional Institute Learning Logo.
Ir para o conteúdo principal
  • Home
    • Todos os recursos
    • LPI Materiais Didáticos
    • Colabore Conosco
    • Publishing Partners
    • Seja um Publishing Partner
    • Quem Somos
    • FAQ
    • Colaboradores
    • Contato
  • LPI.org
3.2 Lição 2
Tópico 1: A comunidade Linux e a carreira Open Source
1.1 A evolução do Linux e sistemas operacionais populares
  • 1.1 Lição 1
1.2 Principais Aplicações Open Source
  • 1.2 Lição 1
1.3 Entendendo o Software Open Source e suas Licenças
  • 1.3 Lição 1
1.4 Habilidades ICT e trabalhando no Linux
  • 1.4 Lição 1
Tópico 2: Encontrando seu caminho em um Sistema Linux
2.1 O básico sobre a linha de comando
  • 2.1 Lição 1
  • 2.1 Lição 2
2.2 Usando a linha de comando para conseguir ajuda
  • 2.2 Lição 1
2.3 Usando diretórios e listando arquivos
  • 2.3 Lição 1
  • 2.3 Lição 2
2.4 Criando, Movendo e Deletando Arquivos
  • 2.4 Lição 1
Tópico 3: O Poder da Linha de Comando
3.1 Empacotando arquivos na linha de comando
  • 3.1 Lição 1
3.2 Pesquisando e extraindo dados de arquivos
  • 3.2 Lição 1
  • 3.2 Lição 2
3.3 Transformando comandos em Scripts
  • 3.3 Lição 1
  • 3.3 Lição 2
Tópico 4: O Sistema Operacional Linux
4.1 Escolhendo um Sistema Operacional
  • 4.1 Lição 1
4.2 Entendendo o Hardware do Computador
  • 4.2 Lição 1
4.3 Onde os dados são armazenados
  • 4.3 Lição 1
  • 4.3 Lição 2
4.4 Seu Computador na Rede
  • 4.4 Lição 1
Tópico 5: Segurança e Permissões de Arquivos
5.1 Segurança Básica e Identificação de Tipos de Usuários
  • 5.1 Lição 1
5.2 Criando Usuários e Grupos
  • 5.2 Lição 1
5.3 Gerenciando permissões e donos de arquivos
  • 5.3 Lição 1
5.4 Diretórios e arquivos especiais
  • 5.4 Lição 1
How to get certified
  1. Tópico 3: O Poder da Linha de Comando
  2. 3.2 Pesquisando e extraindo dados de arquivos
  3. 3.2 Lição 2

3.2 Lição 2

Certificação:

Linux Essentials

Versão:

1.6

Tópico:

3 O poder da linha de comando

Objetivo:

3.2 Como buscar e extrair dados de arquivos

Lição:

2 of 2

Introdução

Nesta lição, trataremos de ferramentas para a manipulação de texto. Elas são frequentemente usadas por administradores de sistema ou programas para monitorar ou identificar automaticamente informações recorrentes específicas.

Pesquisando dentro de arquivos com grep

A primeira ferramenta que discutiremos nesta lição é o comando grep. grep é a abreviação da frase “global regular expression print” (impressão de expressão regular global) e sua principal funcionalidade é buscar por um padrão especificado dentro de arquivos. O comando exibe, destacada em vermelho, a linha que contém o padrão especificado.

$ grep bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
user:x:1001:1001:User,,,,:/home/user:/bin/bash

O grep, como a maioria dos comandos, também pode ser refinado com opções. As mais comuns são:

-i

a busca não diferencia maiúsculas de minúsculas

-r

a busca é recursiva (pesquisa todos os arquivos dentro do diretório especificado, mais seus subdiretórios)

-c

a busca conta o número de correspondências

-v

inverte o termo de correspondência para imprimir linhas que não correspondem ao termo de pesquisa

-E

ativa expressões regulares estendidas (necessárias para alguns dos metacaracteres mais avançados, como |, + e ?)

O grep tem muitas outras opções úteis. Consulte a página do manual para saber mais sobre ele.

Expressões regulares

A segunda ferramenta é muito poderosa. É usada para descrever pedacinhos de texto dentro de arquivos, também chamados de expressões regulares. As expressões regulares são utilíssimas na extração de dados de arquivos de texto através da construção de padrões. São comumente usadas em scripts ou em programação com linguagens de alto nível, como Perl ou Python.

Ao trabalhar com expressões regulares, é muito importante ter em mente que todos os caracteres contam; o padrão é escrito com o objetivo de corresponder a uma sequência específica de caracteres, conhecida como string. A maioria dos padrões usa os símbolos ASCII normais, como letras, dígitos, sinais de pontuação ou outros símbolos, mas também pode usar caracteres Unicode para corresponder a qualquer outro tipo de texto.

A lista a seguir explica os metacaracteres das expressões regulares usadas para formar os padrões.

.

Corresponde a qualquer caractere único (exceto nova linha)

[abcABC]

Corresponde a qualquer caractere dentro dos colchetes

[^abcABC]

Corresponde a qualquer caractere, exceto os que estão entre colchetes

[a-z]

Corresponde a qualquer caractere no intervalo

[^a-z]

Corresponde a qualquer caractere, exceto os do intervalo

sun|moon

Busca qualquer uma das strings listadas

^

Início de uma linha

$

Fim de uma linha

Todas as funcionalidades das expressões regulares também podem ser implementadas através do grep. Você pode constatar que, no exemplo acima, a palavra não está entre aspas duplas. Para impedir que o shell interprete o próprio metacaractere, é recomendável que o padrão mais complexo esteja entre aspas duplas (" "). Para fins de prática, usaremos aspas duplas ao implementar expressões regulares. As outras aspas mantêm sua funcionalidade normal, conforme discutido nas lições anteriores.

Os exemplos a seguir enfatizam a funcionalidade das expressões regulares. Precisaremos de dados que estão dentro do arquivo, e portanto o próximo conjunto de comandos somente inclui strings diferentes no arquivo text.txt.

$ echo "aaabbb1" > text.txt
$ echo "abab2" >> text.txt
$ echo "noone2" >> text.txt
$ echo "class1" >> text.txt
$ echo "alien2" >> text.txt
$ cat text.txt
aaabbb1
abab2
noone2
class1
alien2

O primeiro exemplo é uma combinação de buscas no arquivo sem e com expressões regulares. Para entender bem as expressões regulares, é muito importante mostrar a diferença. O primeiro comando procura pela string exata em qualquer lugar da linha, enquanto o segundo comando procura por conjuntos de caracteres que contenham qualquer um dos caracteres entre colchetes. Portanto, os resultados dos comandos são diferentes.

$ grep "ab" text.txt
aaabbb1
abab2
$ grep "[ab]" text.txt
aaabbb1
abab2
class1
alien2

O segundo conjunto de exemplos mostra a aplicação do metacaractere de início e fim da linha. É muito importante especificar a necessidade de colocar os 2 caracteres no lugar certo dentro da expressão. Ao se especificar o início da linha, o metacaractere precisa vir antes da expressão; já ao se especificar o final da linha, o metacaractere deve ser posto após a expressão.

$ grep "^a" text.txt
aaabbb1
abab2
alien2
$ grep "2$" text.txt
abab2
noone2
alien2

Além dos metacaracteres explicados anteriormente, as expressões regulares também possuem metacaracteres que permitem a multiplicação do padrão especificado anteriormente:

*

Zero ou mais do padrão anterior

+

Um ou mais do padrão anterior

?

Zero ou um do padrão anterior

Para os metacaracteres multiplicadores, o comando abaixo busca uma sequência que contenha ab, um único caractere e um ou mais dos caracteres encontrados anteriormente. O resultado mostra que o grep encontrou a string aaabbb1, correspondendo à parte do abbb, bem como abab2. Como o caractere + é um caractere de expressão regular estendida , precisamos passar a opção -E para o comando grep.

$ grep -E "ab.+" text.txt
aaabbb1
abab2

A maioria dos metacaracteres é autoexplicativa, mas no início eles podem ser meio difíceis de assimilar. Os exemplos anteriores representam uma pequena parte da funcionalidade das expressões regulares. Experimente todos os metacaracteres da tabela acima para entender melhor como eles funcionam.

Exercícios Guiados

Usando grep e o arquivo /usr/share/hunspell/en_US.dic, encontre as linhas que correspondem aos seguintes critérios:

  1. Todas as linhas que contêm a palavra cat em qualquer lugar da linha.

  2. Todas as linhas que não contêm nenhum dos seguintes caracteres: sawgtfixk.

  3. Todas as linhas que começam com 3 letras quaisquer e a palavra dig.

  4. Todas as linhas que terminam com pelo menos um e.

  5. Todas as linhas que contêm uma das seguintes palavras: org , kay ou tuna.

  6. Número de linhas que começam com um ou nenhum c seguido pela string ati.

Exercícios Exploratórios

  1. Encontre a expressão regular que corresponde às palavras na linha “Incluir” e que não corresponde às da linha “Excluir”::

    • Incluir: pot, spot, apot

      Excluir: potic, spots, potatoe

    • Incluir: arp99, apple, zipper

      Excluir: zoo, arive, attack

    • Incluir: arcane, capper, zoology

      Excluir: air, coper, zoloc

    • Incluir: 0th/pt, 3th/tc, 9th/pt

      Excluir: 0/nm, 3/nm, 9/nm

    • Incluir: Hawaii, Dario, Ramiro

      Excluir: hawaii, Ian, Alice

  2. Que outro comando útil é comumente usado para pesquisar dentro de arquivos? Quais funcionalidades adicionais ele oferece?

  3. Escolha um dos exemplos da lição anterior e tente buscar por um padrão específico na saída do comando com a ajuda do grep.

Resumo

Nesta lição, você aprendeu:

  • Metacaracteres em expressões regulares

  • Como criar padrões com expressões regulares

  • Como buscar dentro de arquivos

Comandos usados nos exercícios:

grep

Busca por caracteres ou sequências dentro de um arquivo

Respostas aos Exercícios Guiados

Usando grep e o arquivo /usr/share/hunspell/en_US.dic, encontre as linhas que correspondem aos seguintes critérios:

  1. Todas as linhas que contêm a palavra cat em qualquer lugar da linha.

    $ grep "cat" /usr/share/hunspell/en_US.dic
    Alcatraz/M
    Decatur/M
    Hecate/M
    ...
  2. Todas as linhas que não contêm nenhum dos seguintes caracteres: sawgtfixk.

    $ grep -v "[sawgtfixk]" /usr/share/hunspell/en_US.dic
    49269
    0/nm
    1/n1
    2/nm
    2nd/p
    3/nm
    3rd/p
    4/nm
    5/nm
    6/nm
    7/nm
    8/nm
    ...
  3. Todas as linhas que começam com 3 letras quaisquer e a palavra dig.

    $ grep "^...dig" /usr/share/hunspell/en_US.dic
    cardigan/SM
    condign
    predigest/GDS
    ...
  4. Todas as linhas que terminam com pelo menos um e.

    $ grep -E "e+$" /usr/share/hunspell/en_US.dic
    Anglicize
    Anglophobe
    Anthropocene
    ...
  5. Todas as linhas que contêm uma das seguintes palavras: org , kay ou tuna.

    $ grep -E "org|kay|tuna" /usr/share/hunspell/en_US.dic
    Borg/SM
    George/MS
    Tokay/M
    fortunate/UY
    ...
  6. Número de linhas que começam com um ou nenhum c seguido pela string ati.

    $ grep -cE "^c?ati" /usr/share/hunspell/en_US.dic
    3

Respostas aos Exercícios Exploratórios

  1. Encontre a expressão regular que corresponde às palavras na linha “Incluir” e que não corresponde às da linha “Excluir”:

    • Incluir: pot, spot, apot

      Excluir: potic, spots, potatoe

      Resposta: pot$

    • Incluir: arp99, apple, zipper

      Excluir: zoo, arive, attack

      Resposta: p+

    • Incluir: arcane, capper, zoology

      Excluir: air, coper, zoloc

      Resposta: arc|cap|zoo

    • Incluir: 0th/pt, 3th/tc, 9th/pt

      Excluir: 0/nm, 3/nm, 9/nm

      Resposta: [0-9]th.+

    • Incluir: Hawaii, Dario, Ramiro

      Excluir: hawaii, Ian, Alice

      Resposta: ^[A-Z]a.*i+

  2. Que outro comando útil é comumente usado para pesquisar dentro de arquivos? Quais funcionalidades adicionais ele oferece?

    O comando sed. Ele é capaz de encontrar e substituir caracteres ou conjuntos de caracteres dentro de um arquivo.

  3. Escolha um dos exemplos da lição anterior e tente buscar por um padrão específico na saída do comando com a ajuda do grep.

    Peguei uma das respostas dos Exercícios Exploratórios e busquei pela linha que tem as permissões de grupo para leitura, escrita e execução. Sua resposta pode ser diferente, dependendo do comando que você escolher e do padrão que criar.

    $ cat contents.txt | tr -s " " | grep "^....rwx"

    Este exercício serve para demonstrar que o grep também pode receber entrada de diferentes comandos e ajudar a filtrar as informações geradas.

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

Próxima Lição

3.3 Transformando comandos em Scripts (3.3 Lição 1)

Ir para a próxima lição

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

A LPI é uma organização sem fins lucrativos.

© 2023 O Linux Professional Institute (LPI) é um organismo de apoio aos profissionais de Open Source e referência mundial em certificação. Com mais de 200.000 pessoas certificadas, somos o principal organismo de certificação independente para Linux e Open Source do mundo. O LPI certificou profissionais de mais de 180 países, oferece exames em diversos idiomas e tem centenas de parcerias de formação em todo o globo.

Nossa missão é proporcionar oportunidades econômicas e criativas para todos, tornando universalmente acessível a certificação de conhecimentos e competências em matéria de Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Entre em Contato
  • Política de Privacidade e Cookies

Encontrou um erro ou quer ajudar a aprimorar esta página? Escreva pra nós.

© 1999–2023 The Linux Professional Institute Inc. Todos os direitos reservados.