shell-script-pt
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]