Re: melhor editor para ler um arquivo não formatado.
On Thu, Mar 30, 2006 at 01:04:19PM -0300, Francisco Welington de Sousa Lima wrote:
> Olá pessoal,
>
> meus arquivos estão assim;
>
> 1 1349921.08496094 1214935.60073805
> 984297.043136346 1500000
> 2 1279687.79931641 1091869.07942939
> 795178.497489558 1500000
> 3 1240287.88427734 1025728.20356488
> 701918.851130923 1500000
>
> porque não formatei ,alguém sabe como torná-lo assim
> 1 1349921.08496094 1214935.60073805 984297.043136346 1500000
> Sem ser manualmente, pois são dezenas de arquivos e cada com 500 linhas.
Um editor de texto que pode fazer isso é o vim. Se todos os
arquivos têm exatamente o formato acima, é possível gravar
uma macro no vim para fazer essa tarefa. Antes, é claro,
seria bom fazer um backup dos arquivos.
Para gravar a macro, você posicionaria o cursor no início da
1ª linha e digitaria o seguinte:
<ESC>qq<End>i<Delete><ESC>j<Home>q
Depois, executaria a macro 499 vezes:
499@q
Mas para a coisa ficar realmente automatizada, você poderia
gravar uma nova macro que executaria a macro "q" 500 vezes,
salvaria o arquivo e passaria para o arquivo seguinte:
<ESC>qw500@q:wn<Enter>ggq
Então, sairia do vim e abriria todos os, digamos, 49
arquivos:
vim dados*.txt
e daria um comando para a macro "w" ser executada 50 vezes:
49@w
Seria mais fácil se todos os arquivos pudessem ser
concatenados. Assim, após gravar a primeira macro, bastaria
executá-la 24999 vezes: 24999@q
Outra opção seria fazer um programinha em "awk" para
imprimir somente as linhas ímpares e outro para imprimir
somente as linhas pares. O output seria gravado em arquivos
separados e, depois, o programa "paste" poderia ser usado
para juntar tudo num único arquivo. Talvez também seja
possível resolver o problema com o "sed".
Eu sei que o que escrevi somente será útil se você tiver
interesse em aprender a usar o vim (ou emacs, que também
deve ser capaz de fazer a mesma coisa). Em todo caso, espero
ter ajudado...
Jakson
--
Seus amigos ainda usam Windows?
http://distante.dyndns.org:8280/migrar.html
Reply to: