Exportar linhas específicas como nome de arquivo [RESOLVIDO]

1. Exportar linhas específicas como nome de arquivo [RESOLVIDO]

Jafé Ribeiro de Figueirêdo Filho
xdual

(usa Ubuntu)

Enviado em 26/08/2011 - 18:35h

Serei mais específico. Eu tenho um arquivo de agenda .vcf onde cada contato possui 5 linhas e o nome do contato se encontra na terceira linha de cada contato, sempre antecedido por "N:".
Dando um exemplo de um:
BEGIN:VCARD
VERSION:2.1
N:Xykão
TEL:33998934
END:VCARD
Eu consigo exportar os contatos indidualmente com os comandos (e por aí vai aumentando sempre 5 linhas em head e aumento o número de contato):
cat teste.vcf | head -5 | tail -5 > 001.vcf
cat teste.vcf | head -10 | tail -5 > 002.vcf
Eu queria acrescentar uma expressão (pode ser em cada comando) para que a terceira linha (e depois sempre mais 5) seja o nome do arquivo. Um outro user me deu um help legal, mas eu não consegui juntar na mesma linha. Espero que tenha sido claro.


  


2. Re: Exportar linhas específicas como nome de arquivo [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 26/08/2011 - 18:47h

É só juntar o que eu havia postado, veja:

i=0
while read LINHA; do
i=((i+1))
echo "$LINHA" >> /tmp/temp
ARQUIVO=$(echo "$LINHA" | egrep '^N:' | cut -d':' -f 2 )
if [ $i -eq 5 ]; then
mv /tmp/temp "$ARQUIVO".vcf
i=0
continue
fi
done < agenda .vcf

Isso deve servir :-)




3. Re: Exportar linhas específicas como nome de arquivo [RESOLVIDO]

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 26/08/2011 - 23:02h

Vê se isto ajuda

awk '/^N\:/ { saida=substr($0,3); print saida > saida".vcf" }' agenda.vcf



4. Resultados

Jafé Ribeiro de Figueirêdo Filho
xdual

(usa Ubuntu)

Enviado em 27/08/2011 - 01:55h

O primeiro deu erro de sintaxe e o segundo gerou os arquivos com os nomes, mas os mesmos só continham as linhas dos nomes. Deixa eu esclarecer mais:
O arquivo agenda.vcf contem 750 linhas, onde cada contato é composto por cinco linhas. Vejam as 10 primeiras:
BEGIN:VCARD
VERSION:2.1
N:Xyko
TEL:77445566
END:VCARD
BEGIN:VCARD
VERSION:2.1
N:Waldisnei
TEL:88996655
END:VCARD
Eu uso um script de 150 linhas (é, eu sei que não é nada prático esse monte de linhas, mas eu tô aprendendo) cujas 2 primeiras são:
cat teste.vcf | head -5 | tail -5 > 001.vcf
cat teste.vcf | head -10 | tail -5 > 002.vcf
Mas como vocês vêem, os nomes dos arquivos gerados vão de 001.vcf até 150.vcf.
Eu queria a expressão (mesmo que eu tenha de colocá-la 150 vezes) que usasse a terceira linha (menos os dois primeiros caracteres) para nomear o primeiro arquivo, a oitava linha para renomear o segundo e por aí vai, sempre "pulando" de 5 em 5.
Um grande obrigado a ajuda de vocês.


5. Re: Exportar linhas específicas como nome de arquivo [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 27/08/2011 - 09:00h

Desculpe, mas não é assim também.

Você disse que o primeiro deu erro de sintaxe, mas é bom especificar qual erro apareceu para analisarmos, não cheguei a fazer testes, mas coloquei a ideia que acredito ir de encontro com a solução que você precisa.

Ok? :-)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts