Dividir um txt

1,638 views
Skip to first unread message

Ana Garcia

unread,
Jul 3, 2013, 10:21:54 AM7/3/13
to qgisb...@googlegroups.com
Boa tarde,

Tenho um txt com 16 milhoes de linhas de dados que estão desordenados. Queria dividir esse txt em vários ficheiros de acordo com a sua data.

Exemplo
Input.txt
2012-02-01, xx, x
2012-09-01, xx, xx
2012-08-02, xw2, x1
2012-02-01 x ,xw
2012-08-01, x, xs

Outputs
dia1mes2.txt
2012-02-01, xx, x
2012-02-01 x ,xw

dia1mes9.txt
2012-09-01, xx, xx

dia1mes8.txt
2012-08-01, x, xs

dia2mes8.txt
2012-08-02, xw2, x1

Como posso fazer isto usando c, c++ ou php, html? Estou a usar o Notepad++ mas perco muito tempo a fazer isto...


Anderson Roberto da Silva

unread,
Jul 3, 2013, 10:35:07 AM7/3/13
to qgisb...@googlegroups.com
Ana,
Se vc for fazer um algoritmo (linguagem de sua preferência) que faça algo assim:
1) pegar a primeira data e copiar os dados, verificar se existe outras iguais varrendo linha a linha. Se encontrar outro igual, copie os dados;
2) Ao passar para a data seguinte, verificar se esta já não foi feita, caso sim pula, caso não refaça o processo descrito na etapa 1.

Imagino que vai demorar, pois são 16 milhões de linhas.

Outra forma, particularmente eu partiria por este processo, seria importar seus dados para um banco de dados, com uma coluna data, e outra para seus dados. Depois através de uma consulta SQL, vc extrai os dados por data.

Boa sorte!

-- 
Anderson Roberto da Silva
Engenheiro Cartógrafo







--
--
---
Você recebeu esta mensagem do Grupo "QGISBrasil"
Para postar neste grupo, envie um e-mail para qgisb...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail paragisbrasi...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com/group/qgisbrasil?hl=pt?hl=pt-BR
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "qgisbrasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para qgisbrasil+...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Ana Garcia

unread,
Jul 3, 2013, 11:26:55 AM7/3/13
to qgisb...@googlegroups.com
Olá Ander,

Estou a usar o mysql workbench e faço a querie mas não chego a obter os resultados porque perde-se a conexão ao servidor Mysql.  Acho que isto acontece por ter um volume de dados muito grande.
Tens alguma sugestão para  mim?

Obrigada,

Ana Garcia

unread,
Jul 3, 2013, 11:31:49 AM7/3/13
to qgisb...@googlegroups.com
E já estou a trabalhar só com 600 000 linhas de cada vez. Dividi o ficheiro original

everton rocha

unread,
Jul 3, 2013, 3:03:33 PM7/3/13
to qgisb...@googlegroups.com
alguns programas como :

Split Large Text Files

ajudam..

Eles não seguem uma regra pré-estabelecida. Mas, ajudam a reduzir a quantidade de dados a serem lidos por vez.

Talvez possa tentar..

Everton

--
--
---
Você recebeu esta mensagem do Grupo "QGISBrasil"
Para postar neste grupo, envie um e-mail para qgisb...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail paragisbrasi...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com/group/qgisbrasil?hl=pt?hl=pt-BR
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "qgisbrasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para qgisbrasil+...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Everton Rocha
55-27-8166-3347

yjmenezes

unread,
Jul 5, 2013, 9:07:45 AM7/5/13
to qgisb...@googlegroups.com
Ana,

Bom dia.

Elaborei aqui um script *NIX.
Nao eh necessario a instalacao de qq programa, sao comandos e ferramentas padrao de qq instalacao *NIX ( grep, sort, head, tail, sed, awk ).

basicamente teria de fornecer seu arquivo como entrada digitando:

./qgis_quebra_txt.sh  < entrada_16milhoes.txt

espero que ajude;

[]s
julio menezes
usuario GNU/Linux
PS: ATENCAO, seu aquivo devera iniciar com a DATA e ter as virgulas separando os campos, conforme o exemplo que voce forneceu.
qgis_quebra_txt_ler.zip

yjmenezes

unread,
Jul 7, 2013, 7:29:48 PM7/7/13
to qgisb...@googlegroups.com
Ana,

Somente complementando meu post anterior.
Caso nao seja usuaria de sistemas operacionais *NIX, existe o CYGWIN, que permite ter estas ferramentas ( grep, awk, sed, head, tail,.... )em ambiente grafico Windows.
www.cygwin.com que pertence a Red Hat.

O setup, disponivel no site, faz a instalacao minima e cria um Icon no Desktop dando acesso ao bash e demais comandos *NIX.
Bash eh o interpredador da linha de comandos *NIX, seria como command.com, mas, IMHO, muito superior do ponto de vista tecnico.

com o Cygwin, sera capaz de executar os scriptes que envie anexado ao e-mail anterior.

[]s
julio menezes

Reply all
Reply to author
Forward
0 new messages