Início > Linux, Shell Script > Shell Script: Extrair trechos de uma linha

Shell Script: Extrair trechos de uma linha


Acompanhando meus feeds, vi um post interessante do InFog com o título de Expressões Regulares:  Casar texto entre chaves .  Nesse post, ele demonstra como obter um texto que se encontra entre chaves em uma linha usando a linguagem Python e PHP.  Essa era uma coisa que eu estava procurando em meu aprendizado com Shell Script e resolvi tentar achar uma solução nessa linguagem.  Depois de umas tentativas sem sucesso, obtive ajuda de colegas da lista shell-script no Yahoo! Grupos.

Eis então duas abordagens interessantes:

Primeira: Obter os textos juntamente com as chaves.

Essa solução é a mais simples. Vou usar o mesmo texto que foi usado no post dele no script abaixo:

#!/bin/bash

texto="ola, {sou} uma string com {varios} caracteres {especiais}"

grep -o '[{][^}]*[}]' <<< "$texto"

Se executar esse script, a saída será:

{sou}
{varios}
{especiais}

Interessante! Mas eu ainda queria algo que também eliminasse as chaves e ficasse somente o texto dentro delas, cada um em uma linha. O sed é ótimo pra isso.

Segunda: Obter os textos sem as chaves na saída

#!/bin/bash

texto="ola, {sou} uma string com {varios} caracteres {especiais}"

sed '
        s/^[^{]*[{]//;
        s/[}][^{]*[{]/\n/g;
        s/[}].*$//
' <<< "$texto"

O primeiro comando do sed apaga do início da linha até a primeira chave. O segundo, substitui todo o conteúdo entre as chaves por um caractere de nova linha (\n) e o terceiro apaga desde a última chave até a final da linha.

E se executarmos o script…

sou
varios
especiais

Exatamente como eu queria!

Anúncios
Categorias:Linux, Shell Script Tags:, , ,
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: