[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Trocando a linha de cima pelas de baixo - compartilhando solucao
From: |
Ivan lopes |
Subject: |
Trocando a linha de cima pelas de baixo - compartilhando solucao |
Date: |
Thu, 11 Oct 2007 05:47:02 -0300 |
problema:
entrada:
A
B
A
B
A
B
saida desejada:
B
A
B
A
B
A
eu tive o problema a cima ... e a solucao foi usar o sed ...
$ echo -e "A\nB\nA\nB\nA\nB"| sed -n 'h;n;G;p'
todavia, as opcoes do sed me pareceram muito obscuras
pois eu nao entendia esse tal de `n` hide e `n` next.
ai eu resolvi dar uma lida, por ai e agora vejo que o sed eh
um cara muito simples ...
E VOU COMPARTILHAR COM VCS ESSAS OBSERVACOES
vejamos:
substituindo as opcoes de linha por um arquivo com as mesmas
'h;n;G;p' virou troca.sed
$ cat troca.sed
h
# esconde a linha no buffer
# buffer <= linha(atual)
n
# proxima linha
# atual++
G
# saida = saida + buffer + linha(atual)
p
# imprima a saida.
Tah sei que parece loucura ...
mas veja dessa forma:
em uma pseudo linguagem ... teriamos
saida = empty
buffer = empty
atual = 1;
while (atual <= NumeroDeLinhasDoPipe) {
buffer = linha(atual)
atual ++
saida = saida + buffer + linha(atual)
atual ++
}
imprima saida
FIM ...
CLARO QUE DA FORMA ABAIXO EH MELHOR .... E CORRETA!!!
while (atual <= NumeroDeLinhasDoPipe) {
buffer = linha(atual)
saida = saida + buffer + linha(atual)
atual +=2
}
vlw
--
[ ]'s
Ivan Carlos Da Silva Lopes
Engenheiro Eletronico e Computacao
UFRJ
- Trocando a linha de cima pelas de baixo - compartilhando solucao,
Ivan lopes <=