ViniGianezi
(usa Ubuntu)
Enviado em 13/11/2014 - 08:58h
Galera, enquanto ninguém me respondia, debrucei de cara em pesquisas pela web, até que finalmente encontrei a solução para o meu caso. E achei por bem compartilhar neste fórum pois outros usuários Linux com certeza terão a mesma dificuldade.
Exemplo: localizar determinado padrão definido numa ER e imprimir apenas eles um em cada linha.
Arquivo:
Papai comprou uma bola quadrada vermelha.
João jogou futebol na quadra da escola.
O quadro da sala está quebrado.
Imaginemos que seja necessário exibir apenas a cadeia que coincidir com [a-Z]* q*.
Usamos o comando 's///' do sed (representa o recurso "localizar e substituir" do notepad++ e do bloco de notas) da seguinte forma:
sed -e 's/\([a-Z]* q*\) /\1\n/g' arquivoEntrada > arquivoSaida,
onde a ER foi colocada em uma "região", que no sed deve ser colocada entre os símbolos '\(' e '\)'.
No caso, só defini uma única região para minha expressão, então depois do segundo barra normal '/' coloquei \1 (para manter a 1ª região) e em seguida pular uma linha (\n). Ficará assim:
Arquivo:
Papai comprou uma bola quadrada
vermelha.
João jogou futebol na quadra
da escola.
O quadro
da sala está quebrado
.
Vejam que a cadeia que queremos (palavras iniciadas pela letra 'q') ficam todas na última coluna de cada linha que a contém, e então é só usar um comando sed com if para imprimir apenas a última coluna {print $NF} caso a mesma inicie com q* (if $NF = q*).
Claro que esta não é a solução ideal para o caso pois requer mais de um comando, mas é oq tem pra hoje...