Gerenciando arquivos com o Shell

Este é o segundo de uma série, que visa a ser uma porta de entrada para o mundo GNU/Linux. Neste artigo, serão abordados os tópicos: comandos básicos para gerenciamento de arquivos, processando e filtrando arquivos de texto, expressões regulares e o editor Vi.

[ Hits: 18.858 ]

Por: rafael silveira gomes em 30/04/2014


Expressões regulares



Expressões regulares, ou regex, são formas de descrever precisamente cadeias de caracteres, sem a necessidade de informar todos os elementos. Para formar uma expressão regular, utilizam-se caracteres especiais, chamados metacaracteres.

Metacaracteres:
  • \ :: (escape) Indica que o próximo caractere será interpretado literalmente.
  • ^ :: (circunflexo) Utilizado para indicar o início de uma linha.
  • $ :: (cifrão) Utilizado para indicar o fim de uma linha.
  • [...] :: (lista) Utilizada para indicar uma lista de caracteres permitidos.
  • [^...] :: (lista negada) Utilizada para indicar uma lista de caracteres proibidos.
  • . :: (ponto) Utilizado para indicar qualquer caractere único, exceto um espaço em branco.
  • ? :: (opcional) Utilizado para indicar um caractere opcional (pode ou não existir).
  • * :: (asterisco) Utilizado para indicar qualquer caractere ou cadeia de caracteres.

O comando grep:

Este comando é utilizado para filtrar a saída de um outro comando, ou arquivos de texto, procurando por uma palavra ou expressão regular. O grep é "case sensitive", para ignorar maiúsculas e minúsculas, deve-se usar o parâmetro -i (ignore case).

Alguns exemplos de seu uso:

1. Contar quantas vezes a expressão procurada se repete:

grep -c expressao arquivo

2. Mostrar todas as linhas que contém a expressão procurada:

grep -h expressao arquivo

3. Mostrar todas as linhas, exceto as que contém a expressão procurada:

grep -v expressao arquivo

4. Mostrar as linhas com a expressão procurada e as X linhas anteriores:

grep -B X expressao arquivo    # Sendo X um número inteiro

5. Mostrar as linhas com a expressão procurada e as X linhas posteriores:

grep -A X expressao arquivo    # Sendo X um numero inteiro


O comando sed:

Este comando recebe como entrada um arquivo e busca e altera seu conteúdo, de acordo com as regras especificadas pelo usuário. O sed não altera o arquivo original, altera somente o conteúdo que é direcionado para a saída padrão.

Sua sintaxe é:

sed opções expressao arquivo

Opções comuns:
  • d :: Deleta as linhas que casam com a expressão procurada.
  • q :: Termina o sed após encontrar uma linha com a expressão procurada.
  • p :: Mostra na tela todas as linhas que contenham a expressão procurada.
  • s :: Substitui a expressão (quando encontrada) por uma outra pré-definida.

Alguns exemplos de seu uso, são:

1. Imprimir as linhas que contém uma determinada cadeia de caracteres:

sed -n '/palavra/p' arquivo

2. Apagar as linhas que contém uma determinada cadeia de caracteres:

sed '/palavra/d' arquivo

3. Substituir uma cadeia de caracteres por outra:

sed 's/palavra/novaPalavra' arquivo

4. Terminar o sed após encontrar a cadeia de caracteres procurada:

sed '/palavra/q' arquivo

Página anterior     Próxima página

Páginas do artigo
   1. Comandos básicos para gerenciamento de arquivos
   2. Processando e filtrando arquivos de texto
   3. Expressões regulares
   4. O editor vi
Outros artigos deste autor

Gerenciando Processos com o Shell

Introdução ao Shell

Gerenciamento de Discos com o Shell

Leitura recomendada

Compilação Kernel Linux no Slackware

Programando: Escolhendo a melhor opção

Introdução ao gEDA - Suíte de eletrônica

openSUSE Tumbleweed Snapshots - A Melhor Forma de Controle de Atualizações e Quebras do Sistema

Introdução ao Linux: Instalação do Xubuntu

  
Comentários
[1] Comentário enviado por dimasdaros em 01/05/2014 - 20:05h

Artigo que deveria ser lido por todos que usam Linux, especialmente iniciantes, com os assuntos tratados já da para se virar bem com o terminal.
Bom artigo @rsilveiragomes

Só uma pergunta sobre o "cd $PLDPWD", funcionamento dele pelo que notei aqui é semelhante ao "cd -", que volta para o diretório anterior.
Sabe qual a diferença?

Grande abraço.
Até mais


[2] Comentário enviado por rsilveiragomes em 01/05/2014 - 21:14h

dimasdaros >>>

Obrigado pelo feedback :)
A minha idéia é essa mesmo fazer com que os iniciantes aprendam a caminhar com as próprias pernas (igual eu estou aprendendo).

Agora sobre a sua dúvida:

O comando: "cd $OLDPWD" volta para o diretório anterior através do valor guardado na variável OLDPWD (esta variável guarda sempre o endereço do último diretório acessado).

O comando "cd -" volta para o diretório anterior e mostra na tela qual é este diretório. Ou seja, "cd -" equivale a um "cd $OLDPWD" + "pwd".

entendeu ?

[3] Comentário enviado por dimasdaros em 01/05/2014 - 21:20h


[2] Comentário enviado por rsilveiragomes em 01/05/2014 - 21:14h:

dimasdaros >>>

Obrigado pelo feedback :)
A minha idéia é essa mesmo fazer com que os iniciantes aprendam a caminhar com as próprias pernas (igual eu estou aprendendo).

Agora sobre a sua dúvida:

O comando: "cd $OLDPWD" volta para o diretório anterior através do valor guardado na variável OLDPWD (esta variável guarda sempre o endereço do último diretório acessado).

O comando "cd -" volta para o diretório anterior e mostra na tela qual é este diretório. Ou seja, "cd -" equivale a um "cd $OLDPWD" + "pwd".

entendeu ?


Compreendi sim, realmente quado testei aqui teve essa diferença, mas nem dei atenção à ela.
Brigadão pelo esclarecimento (y)

[4] Comentário enviado por albfneto em 02/05/2014 - 19:35h

conheço, mas favoritei. Dica muito boa para todos os Iniciantes!
Parabéns!

sugiro que cite a primeira parte, nos comentários, para loalizar mais fácilmente. Cada parte da série que fizer, cite as anteriores.

[5] Comentário enviado por rsilveiragomes em 02/05/2014 - 20:08h


[4] Comentário enviado por albfneto em 02/05/2014 - 19:35h:

conheço, mas favoritei. Dica muito boa para todos os Iniciantes!
Parabéns!

sugiro que cite a primeira parte, nos comentários, para loalizar mais fácilmente. Cada parte da série que fizer, cite as anteriores.


É.. bem pensado isso kkk
Só que agora não consigo mais editar o artigo (ou consigo ?).. vou implementar a dica nos próximos ;)
Valeu !

[6] Comentário enviado por albfneto em 03/05/2014 - 13:43h

vc pode citar a parte 1 aqui mesmo, nos comentários, mas se quiser, me forneça o link e o texto, o que queria colocar na edição e onde colocar (em que ponto do artigo) que eu edito para você, sou um dos Moderadores.


[8] Comentário enviado por marbreu em 30/06/2014 - 20:26h

muito bom este artigo, vç deveria condensar seus outros artigos em um só, ajudaria muita gente que esta iniciando e consultas p/os mais experientes.

[9] Comentário enviado por rsilveiragomes em 01/07/2014 - 11:59h

marbreu >> eu iria fazer um só mas iria ficar meio grande.. e daí como não tenho muito tempo livre.. fui postando conforme terminei as 'partes'.. pq queria ter um feedback também :P

Quando eu acabar todas as 'partes' que pensei em escrever, dependendo do tamanho, deleto os artigos soltos e faço um novo post único x)

[10] Comentário enviado por marbreu em 06/07/2014 - 13:23h

Valeu belo post e abçs....


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts