Fórum Ubuntu Linux - PT
19 de Junho de 2013, 10:54 *
Olá, Visitante. Faça o login ou registre-se.
Perdeu o seu e-mail de ativação?

Login com nome de usuário, senha e duração da sessão
Notícias: Atenção usuários de email com anti-spam (Uol e Bol).
 
   Home   Ajuda Regras Pesquisa Login Registre-se  
Anúncios
Páginas: [1]   Ir para o fundo
  Imprimir  
Autor Tópico: [Resolvido] Script para Manipulação de Texto usando sed  (Lida 1068 vezes)
Mero_
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 86


Slack, Because It Works! Keep It Simple, Stupid..


Ver Perfil
« em: 10 de Julho de 2009, 13:42 »

 Bom dia/tarde/noite galera.
 Seguinte, estou tentando gerar um arquivo .csv com uma lista de contatos para serem adicionados ao gmail, os Nomes e E-mails já foram retirados de uma planilha (arquivo.xls), criei 2 arquivos de texto, um com os Nomes dos contatos e outro com o E-mail, sendo que nesses arquivos fica apenas um Nome / E-mail por linha (são 1350 linhas em cada arquivo, pois tenho 1350 Nomes e E-mails), só preciso de um script para fazer o seguinte:

Retirar o NomeDaPrimeiraLinha do arquivo "NOMES" + o E-mailDaPrimeiraLinha do arquivo "E-mails" e adicioná-los numa mesma linha do arquivo "CONTATOS.csv", assim sucessivamente, até o último Nome e Email, ficando um par de informações (Nome + E-mail) por linha dentro do arquivo "CONTATOS.csv", ficando com as mesmas 1350 linhas.
 
 Espero não tê-los confundido muito... rsrs
 Eu estava pesquisando aqui: http://thobias.org/doc/sosed.html, mas as informações são limitadas para o que preciso (manipulação de mais de um arquivo de texto ao mesmo tempo).
.
 Alguém com prática em SED ou algum outro programa pra me dar uma força por favor? Agradeço desde já.
« Última modificação: 11 de Julho de 2009, 09:47 por Mero_ » Registrado

O verdadeiro Capitalismo não está no sistema, mas sim na mente e no coração das pessoas. (By Myself)
raidicar
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 579


Quad Shot of Ubuntu


Ver Perfil
« Responder #1 em: 11 de Julho de 2009, 00:24 »

Conheço o arquivo .csv, mas nunca dei atenção quando o exporto ou importo, estou em um base 100% linux agora então, a duvida é: O .csv é um arquivo de texto normal?
Além disso, não sei como o mesmo é organizado, você dis que o nome e o email vem na mesma linha, existe espaço entre o nome e o email? quanto de espaço?
Tentou alguma coisa? chegou a algum lugar?

Esse tópico estária melhor se fosse postado na seção de shellscript.
Registrado

Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.
clcampos
Administrador
Usuário Ubuntu
*****
Logado Logado

Mensagens: 10.782


.:: User Linux #439596 ::.


Ver Perfil
« Responder #2 em: 11 de Julho de 2009, 00:39 »

Opa, to movendo ele para o local indicado, muito sabiamente, pelo raidicar.

Agora sei que já tem um comando que faz a união como deseja... basta mesmo é lembrar... hehehe
Registrado

Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!
Mero_
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 86


Slack, Because It Works! Keep It Simple, Stupid..


Ver Perfil
« Responder #3 em: 11 de Julho de 2009, 00:51 »

 Oi raidicar, o .csv é um arquivo de texto normal sim, mas não precisa se preocupar com isso, nem com espaçamentos, quero apenas uma linha de comando (provavelmente via sed) que faça, ao mesmo tempo:

 Copiar a Linha1 do Arquiv1 e colar na  Linha1 do Arquivo3 (inicialmente em branco);
 Copiar a Linha1 do Arquivo2 para o final da primeira linha já inciada no Arquivo3 (considerando o procedimento supracitado).
 Depoias a segunda;
 Depois a Terceita;

 Considerar:
 O Arquivo1 só tem uma informação por linha, que é um nome de cadastro, são 1350 linhas, somando 1350 nomes.
 O Arquivo2 só tem uma informação por linha, que é um e-mail, o E-mail da primeira linha desse arquivo corresponde ao nome que está na primeira linha do Arquivo1, e assim sucessivamente.

 Isso recursivamente até a 1350 linha (Os arquivso 1 e 2 têm 1350 linhas cada) formando um Arquivo3 com 1350 linhas tbm, contendo os dados do Arquivo1 + os dados do Arquivo2.
 O resto eu desenrolo.

 Infelizmente progredi quase nada ainda, comecei a pegar em sed hoje (vergonha..Triste).
 Acho que o princípio seria esse:

sed '1s/^/começo do arquivo/'  Arquivo1.txt > Arquivo3.txt  
sed '1s/$/final da linha/' Arquivo2.txt > Arquivo3.txt              

sed '2s/^/começo do arquivo/'  Arquivo1.txt > Arquivo3.txt  (Aqui falta apontar a saida pra linha seguinte do Arquivo3)
sed '2s/$/final da linha/' Arquivo2.txt > Arquivo3.txt              (Aqui falta apontar a saida pra linha seguinte do Arquivo3)

Só que nem imagino como fazer isso recursivamente, nem como jogar o conteúdo noutra linha do Arquivo3. Mas não é viável uma entrada do sed como descrito acima pra cada linha que devo copiar Triste.. rsrs
« Última modificação: 11 de Julho de 2009, 11:51 por Mero_ » Registrado

O verdadeiro Capitalismo não está no sistema, mas sim na mente e no coração das pessoas. (By Myself)
Mero_
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 86


Slack, Because It Works! Keep It Simple, Stupid..


Ver Perfil
« Responder #4 em: 11 de Julho de 2009, 09:47 »

 Oi galera, grato pela força raidicar e Cristiano, mas acabei de achar o que eu queria, tópico resolvido.
 À título de informação, o que eu queria era juntar 2 arquivos, sendo que as linhas de cada um fossem unidas, gerando um terceiro arquivo com o mesmo números de linhas, resultado da união do arquivo1 + arquivo2. Comando:

$sed 'N;s/\n/\t/' arquivo1.txt arquivo2.txt > arquivo3.txt

 Obrigado.
Registrado

O verdadeiro Capitalismo não está no sistema, mas sim na mente e no coração das pessoas. (By Myself)
clcampos
Administrador
Usuário Ubuntu
*****
Logado Logado

Mensagens: 10.782


.:: User Linux #439596 ::.


Ver Perfil
« Responder #5 em: 11 de Julho de 2009, 09:49 »

Oi galera, grato pela força raidicar e Cristiano, mas acabei de achar o que eu queria, tópico resolvido.
 À título de informação, o que eu queria era juntar 2 arquivos, sendo que as linhas de cada um fossem unidas, gerando um terceiro arquivo com o mesmo números de linhas, resultado da união do arquivo1 + arquivo2. Comando:

$sed 'N;s/\n/\t/' arquivo1.txt arquivo2.txt > arquivo3.txt

 Obrigado.

Grande Mero_ parabéns!

Anotei sua dica.
Registrado

Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!
Páginas: [1]   Ir para o topo
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Tema desenvolvido por FaBMak e n3t0
Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines
© 2013 Canonical Ltd. Ubuntu e Canonical são marcas registradas da Canonical Ltd.
XHTML 1.0 válido! CSS válido!