shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Registros multi-linha em arquivo texto, ou Delimitadores de trecho de t


From: Breno Moiana
Subject: Registros multi-linha em arquivo texto, ou Delimitadores de trecho de texto - parte II
Date: Fri, 3 Apr 2009 15:51:54 -0300

Boa tarde, lista.

Algum tempo atrás, rodou na lista um estudo de caso [1] sobre um
arquivo texto que continha registros que precisavam ser reorganizados.

[1] http://br.groups.yahoo.com/group/shell-script/message/27782


A estrutura do arquivo era a seguinte:

<exemplo>

Ficha: 01
Nome: Fulano
Resumo: blabla
Telefone: 44 xxxx-9460
E-mail: fulano@...

-----

Ficha:02
Nome: Beltrano
Resumo: blabla
Telefone: 44 xxxx-2534 E-mail: beltrano@...

-----

Ficha: 03 Nome: Cicrano
Resumo: blabla
Telefone: 44 xxxx-2300
E-mail: Cicrano@...

</exemplo>

O objetivo era reestruturar o arquivo em colunas de NOME, RESUMO, EMAIL, etc.
Isso foi atingido com algumas propostas diferentes. Sed, Awk, grep+paste...

A minha pergunta é:
E como poderíamos fazer se os campos viessem embaralhados?
Sempre teriamos um separador de registros, mas a ordem dos campos nao
necessariamente é a mesma, e outros campos podem entrar.

Proposta: extrair "NOME, EMAIL, TELEFONE" dos registros no arquivo texto abaixo.
Note que os campos nao se repetem, e que um dos registros nao contem
email, devendo retornar vazio. vamos estipular um "-" nesse caso.
Entao, saída esperada:

<saida>
Fulano          44 xxxx-9460            fulano@...
Beltrano                44 xxxx-2534            -
Cicrano         44 xxxx-2300            Cicrano@...
</saida>

E a fonte de exemplo:

<exemplo>
Ficha: 01
Nome: Fulano
Resumo: blabla
Telefone: 44 xxxx-9460
E-mail: fulano@...
-----
Nome: Beltrano
Ficha:02
Resumo: blabla
Nome da mãe: Maria
Telefone: 44 xxxx-2534
-----
Resumo: blabla
Telefone: 44 xxxx-2300
Ficha: 03
Nome: Cicrano
Comida favorita: jabá com jerimum
E-mail: Cicrano@...
</exemplo>

Ideias?

abraco,

Breno.
--


reply via email to

[Prev in Thread] Current Thread [Next in Thread]