Achei q ia ser mais simples, depois fiquei com preguiça de jogar pra um script...
Se preferir paste: http://rafb.net/p/PqQWHW14.html Boa sorte na tradução :) lazlo:~# cat blah <exemplo> Ficha: 01 Nome: Fulano Resumo: blabla Telefone: 44 xxxx-9460 E-mail: ful...@... ----- 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: cicr...@... </exemplo> lazlo:~# while IFS=$'\n' read -r LINHA; do if [[ "$LINHA" =~ "Nome:" ]]; then NOME="${LINHA/Nome:/}"; elif [[ "$LINHA" =~ "Telefone:" ]]; then FONE="${LINHA/Telefone:/}"; elif [[ "$LINHA" =~ "E-mail:" ]]; then MAIL="${LINHA/E-mail:/}";fi; if [[ "$LINHA" =~ "(/exemplo|-----)" ]]; then echo "X: $NOME $FONE $MAIL"; fi; done <blah X: Fulano 44 xxxx-9460 ful...@... X: Beltrano 44 xxxx-2534 ful...@... X: Cicrano 44 xxxx-2300 cicr...@... -- Flávio do Carmo Júnior aka waKKu 2009/4/3 Breno Moiana <[email protected]>: > 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: ful...@... > > ----- > > Ficha:02 > Nome: Beltrano > Resumo: blabla > Telefone: 44 xxxx-2534 E-mail: beltr...@... > > ----- > > Ficha: 03 Nome: Cicrano > Resumo: blabla > Telefone: 44 xxxx-2300 > E-mail: cicr...@... > > </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 ful...@... > Beltrano 44 xxxx-2534 - > Cicrano 44 xxxx-2300 cicr...@... > </saida> > > E a fonte de exemplo: > > <exemplo> > Ficha: 01 > Nome: Fulano > Resumo: blabla > Telefone: 44 xxxx-9460 > E-mail: ful...@... > ----- > 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: cicr...@... > </exemplo> > > Ideias? > > abraco, > > Breno. > -- > >
