[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: melhor editor para ler um arquivo não formatado.



Oi Francisco,

> >    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.

Oi Francisco,

Primeiro uma solução semi-manual: como eu tenho essa linha aqui no meu
~/.emacs,

    (global-set-key [f5] 'call-last-kbd-macro)

quando eu bato F5 o Emacs roda o "keyboard macro" default; esta
seqüência de teclas

    C-x ( <end> <del> SPC <down> C-x )

define um macro que gruda a linha atual na próxima e desce pra linha
seguinte - aí se eu deixo a tecla F5 apertada o teclado vai repetindo
os F5s e vai grudando as linhas par a par. Pra rodar, digamos, 500
F5s de uma vez só eu posso bater

    M-5 M-0 M-0 <f5>
ou:
    C-u 5 0 0 <f5>

Se você quer tirar os espaços também então um modo é rodar
"fill-paragraph" (M-q) em cada par de linhas, e pra garantir que os
"parágrafos" vão ser exatamente os pares de linhas você vai ter que ou
cercar cada par de linhas de linhas em branco ou usar "narrowing"...
posso te dar a solução se você quiser, mas como aqui no Brasil as
pessoas só usam vi ("porque é o que todo mundo usa", "porque tem em
todo lugar", "porque eu só quero um editor de texto", isso fora as
piadas tipo "escape-alt-meta-control-shift" e "eight megabytes and
constantly swapping" que a gente tem que ouvir duzentas vezes por dia
- ei César, um dia eu ainda vou quebrar a sua cara, e vai só
brincadeirinha também) então desconfio que não te interessa...

Na verdade eu faria isso aqui, se eu não quisesse fazer um script: se
todos os arquivos estão em /tmp/foo/ e se chamam, digamos, "aaa",
"bbb", etc, então uma solução paranóica (i.e., quase à prova de erros
manuais...) seria criar um bloco de linhas tipo

  (find-file "/tmp/foo/aaa")
  (find-file "/tmp/foo/bbb")
  ...

e aí executar cada uma delas com C-x C-e, rodar o macro lá dentro, e
gravar o arquivo novo.

Uma solução via script é essa aqui: se os seus arquivos estão em
/tmp/foo e você quer que as versões com os pares de linhas grudados
fiquem em /tmp/foo2, rode isso aqui:

    mkdir /tmp/foo2/
    cd    /tmp/foo/
    for i in *; do
      cat $i \
      | awk '
          state == 0 { str = $0; state = 1; next }
          state == 1 { print str " " $0; state = 0; next }
        ' \
      > ../foo2/$i
    done

[], Edrx
  http://angg.twu.net/



Reply to: