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

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

RES: RES: RES: RES: [shell-script] queimando a cuca!!!


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: RES: RES: RES: [shell-script] queimando a cuca!!!
Date: Thu, 23 Sep 2004 11:49:20 -0300

Luiz,
que shell vc está usando? Me parece que o cmd let ++cont não está
funcionando. Repare que o cont não está sendo incrementado. Experimente usar
em seu lugar:

cont=`expr $cont + 1`

ou

cont=$((cont+1))

Compare com o seu (repare que o tail aumenta).

++ cont=2
++ read linha1
++ read linha2
+++ tail +2 teste
++ echo '01 02 03 04'
++ read linha2
++ echo '01 02 05 06'
++ read linha2
++ echo '01 02 07 08'
++ read linha2
++ let ++cont
++ read linha1
++ read linha2
+++ tail +3 teste
++ echo '03 04 05 06'
++ read linha2
++ echo '03 04 07 08'
++ read linha2
++ let ++cont
++ read linha1
++ read linha2
+++ tail +4 teste
++ echo '05 06 07 08'
++ read linha2
++ let ++cont
++ read linha1
++ read linha2
+++ tail +5 teste
++ let ++cont
++ read linha1

[ ]s,
Julio Cezar Neves
- Gerente do Programa de Software Livre -
Tel:+55 21 2528-7070 / +55 21 8112-9988
Fax: +55 21 2528-7646
mailto:address@hidden


| -----Mensagem original-----
| De: lferreir1 [mailto:address@hidden]
| Enviada em: quinta-feira, 23 de setembro de 2004 11:24
| Para: address@hidden
| Assunto: Re: RES: RES: RES: [shell-script] queimando a cuca!!!
| 
| 
| Julio,
| Abaixo a log do processo: ( zerando a saida )
| 
| lferreir >cat numeros
| 01 02
| 03 04
| 05 06
| 07 08
| 
| lferreir >bash -x ./prg
| + cont=2
| + read linha1
| + read linha2
| ++ tail +2 numeros
| + echo '01 02 03 04'
| + read linha2
| + echo '01 02 05 06'
| + read linha2
| + echo '01 02 07 08'
| + read linha2
| + let ++cont
| + read linha1
| + read linha2
| ++ tail +2 numeros
| + echo '03 04 03 04'
| + read linha2
| + echo '03 04 05 06'
| + read linha2
| + echo '03 04 07 08'
| + read linha2
| + let ++cont
| + read linha1
| + read linha2
| ++ tail +2 numeros
| + echo '05 06 03 04'
| + read linha2
| + echo '05 06 05 06'
| + read linha2
| + echo '05 06 07 08'
| + read linha2
| + let ++cont
| + read linha1
| ++ tail +2 numeros
| + read linha2
| + echo '07 08 03 04'
| + read linha2
| + echo '07 08 05 06'
| + read linha2
| + echo '07 08 07 08'
| + read linha2
| + let ++cont
| + read linha1
|  edglobo2:lferreir >
| 
| --- Em address@hidden, Julio Cezar Neves - 
| DATAPREVRJ <julio.neves@p...> escreveu
| > Peraí Luiz! Algo errado!
| > Olha a minha saída:
| > 
| > Prompt> cat saida
| > 01 02 03 04
| > 01 02 05 06
| > 01 02 07 08
| > 03 04 05 06
| > 03 04 07 08
| > 05 06 07 08
| > 
| > É isso que vc quer né?
| > 
| > Prompt> cat prg
| > > saida
| > cont=2
| > while read linha1
| > do
| >     while read linha2
| >     do
| >         echo "$linha1 $linha2" >> saida
| >     done < <(tail +$cont teste)
| >     let ++cont
| > done < teste
| > 
| > Será que vc não esqueceu de botar a 1ª linha (>saida)?
| > 
| > [ ]s,
| > Julio Cezar Neves
| > - Gerente do Programa de Software Livre -
| > Tel:+55 21 2528-7070 / +55 21 8112-9988
| > Fax: +55 21 2528-7646
| > mailto:julio.neves@p...
| > 
| > 
| > | -----Mensagem original-----
| > | De: lferreir1 [mailto:lferreir@e...]
| > | Enviada em: quarta-feira, 22 de setembro de 2004 16:15
| > | Para: address@hidden
| > | Assunto: Re: RES: RES: [shell-script] queimando a cuca!!!
| > | 
| > | 
| > | 
| > | Sim Júlio, eu ví e processei o seu script, porém o resultado não 
| foi 
| > | o esperado, pois existem linhas duplicadas na saida. Mesmo vendo 
| a 
| > | sua lógica, não conseguí tirar esta duplicação.
| > | Ver abaixo:
| > | lferreir >cat numeros
| > | 01 02
| > | 03 04
| > | 05 06
| > | 07 08
| > | lferreir >./prg
| > | 
| > | lferreir >cat saida
| > | 01 02 03 04 # certo 
| > | 01 02 05 06 # certo 
| > | 01 02 07 08 # certo 
| > | 03 04 03 04 # errado ( pegou a linha 2 com ela mesma )
| > | 03 04 05 06 # certo
| > | 03 04 07 08 # certo
| > | 05 06 03 04 # errado ( deveria ser a linha 3 com a linha 4 )
| > | 05 06 05 06 # errado ( pegou a linha 3 com ela mesma )
| > | 05 06 07 08 # certo ( neste exemplo terminaria aqui, penultima 
| linha 
| > | com a última )
| > | 07 08 03 04 # errado
| > | 07 08 05 06 # errado
| > | 07 08 07 08 # errado
| > | 
| > | Conseguí explicar ou complicar?
| > | Luiz!
| > | 
| > | --- Em address@hidden, Julio Cezar Neves - 
| > | DATAPREVRJ <julio.neves@p...> escreveu
| > | > Aê Luiz,
| > | > é só vc procurar na lista, que logo após a minha resposta, vi 
| que o 
| > | que fiz
| > | > não era o que vc queria e na mesma hora mandei a solução 
| correta.
| > | > 
| > | > Prompt> cat prg
| > | > > saida  # para "esvaziar" o arq saida
| > | > cont=2
| > | > while read linha1
| > | > do
| > | >     while read linha2
| > | >     do
| > | >         echo "$linha1 $linha2" >> saida
| > | >     done < <(tail +$cont teste)
| > | >     let ++cont
| > | > done < teste
| > | > Prompt> cat > teste
| > | > 1 5
| > | > 8 10
| > | > 14 20
| > | > 80 90
| > | > Prompt> ./prg
| > | > Prompt> cat saida
| > | > 1 5 8 10
| > | > 1 5 14 20
| > | > 1 5 80 90
| > | > 8 10 14 20
| > | > 8 10 80 90
| > | > 14 20 80 90
| > | > 
| > | > Aqui vai a cópia do e-mail que te mandei às 12:00h de 17/09
| > | > 
| > | > Desculpe Luiz,
| > | > 
| > | > não havia entendido o problema e mandei a resposta errada. 
| > | > 
| > | > Acho que vc queria o seguinte:
| > | > 
| > | > > saida
| > | > cont=2
| > | > while read linha1
| > | > do
| > | >     while read linha2
| > | >     do
| > | >         echo "$linha1 $linha2" >> saida
| > | >     done < <(tail +$cont teste)
| > | >     let ++cont
| > | > done < teste
| > | > 
| > | > As explicações do outro email que passei são válidas para este.
| > | > 
| > | > [ ]s,
| > | > Julio Cezar Neves
| > | > - Gerente do Programa de Software Livre -
| > | > Tel:+55 21 2528-7070 / +55 21 8112-9988
| > | > Fax: +55 21 2528-7646
| > | > mailto:julio.neves@p...
| > | > 
| > | > 
| > | > | -----Mensagem original-----
| > | > | De: lferreir1 [mailto:lferreir@e...]
| > | > | Enviada em: quarta-feira, 22 de setembro de 2004 15:28
| > | > | Para: address@hidden
| > | > | Assunto: Re: RES: [shell-script] queimando a cuca!!!
| > | > | 
| > | > | 
| > | > | 
| > | > | Ae Júlio,
| > | > | Voltando contigo, ainda não seria este o resultado que eu 
| quero.
| > | > | Quero o seguinte:
| > | > | cat numeros
| > | > | 1 5
| > | > | 8 10
| > | > | 14 20
| > | > | 80 90
| > | > | 
| > | > | Quero gerar um arquivo com o seguinte resultado:
| > | > | cat saida
| > | > | 1 5 8 10
| > | > | 1 5 14 20
| > | > | 1 5 80 90
| > | > | 8 10 14 20
| > | > | 8 10 80 90 
| > | > | 14 20 80 90
| > | > | 
| > | > | A saída que o nosso colaborador Thobias é exatamente o que eu 
| > | quero, 
| > | > | porém o sed que ele forneceu não vai nem a pau no meu S.O.
| > | > | Estava vendo o seu script, e acho que mais um pouco vc 
| consegue 
| > | > | resolver pra mim, por que eu.....
| > | > | Aproveitando, estava vendo nas minhas apostilas ( uma porrada 
| que 
| > | > | fico printando e guardando ) achei um sobre o SED, do Aurélio.
| > | > | Muito legal pra quem quer destrinchar o que o Thobias 
| mostrou, só 
| > | que 
| > | > | não estou conseguindo entrar no site que está na apostila.
| > | > | Aurélio, fale onde está a sua apostila sobre sed-HOWTO
| > | > | 
| > | > | Luiz
| > | > | 
| > | > | 
| > | > | 
| > | > | --- Em address@hidden, Julio Cezar Neves - 
| > | > | DATAPREVRJ <julio.neves@p...> escreveu
| > | > | > Aê pessoal, manda solução em sed e awk. Acho que ficam 
| melhores.
| > | > | > 
| > | > | > read Reg1 < numeros
| > | > | > while read Reg2
| > | > | > do
| > | > | >     echo "$Reg1 $Reg2" >> combinado
| > | > | >     Reg1="$Reg2"
| > | > | > done < <(tail +2 numeros)
| > | > | > 
| > | > | > Na última linha a sintaxe <(tail +2 numeros) é para criar 
| um 
| > | > | arquivo do tipo
| > | > | > named pipe temporário (/dev/fd/63) para servir como entrada 
| do 
| > | > | done. Eu dei
| > | > | > um tail +2 pq o 1o registro eu havia lido fora do loop.
| > | > | > 
| > | > | > Veja o teste:
| > | > | > $ seq 10 > numeros
| > | > | > $ prog
| > | > | > $ cat combinado
| > | > | > 1 2
| > | > | > 2 3
| > | > | > 3 4
| > | > | > 4 5
| > | > | > 5 6
| > | > | > 6 7
| > | > | > 7 8
| > | > | > 8 9
| > | > | > 9 10
| > | > | > $ mv combinado numeros
| > | > | > $ prog
| > | > | > $ cat combinado
| > | > | > 1 2 2 3
| > | > | > 2 3 3 4
| > | > | > 3 4 4 5
| > | > | > 4 5 5 6
| > | > | > 5 6 6 7
| > | > | > 6 7 7 8
| > | > | > 7 8 8 9
| > | > | > 8 9 9 10
| > | > | > 
| > | > | > Era isso?
| > | > | > 
| > | > | > [ ]s,
| > | > | > Julio Cezar Neves
| > | > | > Tel:+55 21 2528-7070 / +55 21 8112-9988
| > | > | > Fax: +55 21 2528-7646
| > | > | > mailto:julio.neves@p...
| > | > | > echo 
| > | > | 
| > | 
| 34307180195193995785843441489462450726966798683294575682968973834P | 
| > | > | dc
| > | > | > 
| > | > | > 
| > | > | > | -----Mensagem original-----
| > | > | > | De: lferreir1 [mailto:lferreir@e...]
| > | > | > | Enviada em: sexta-feira, 17 de setembro de 2004 10:57
| > | > | > | Para: address@hidden
| > | > | > | Assunto: [shell-script] queimando a cuca!!!
| > | > | > | 
| > | > | > | 
| > | > | > | 
| > | > | > | Bom dia;
| > | > | > | 
| > | > | > | Tenho o seguinte arquivo
| > | > | > | 
| > | > | > | cat teste
| > | > | > | a b
| > | > | > | c d
| > | > | > | e f
| > | > | > | 
| > | > | > | Quero uma saida com o seguinte resultado:
| > | > | > | a b c d
| > | > | > | a b e f
| > | > | > | c d e f
| > | > | > | 
| > | > | > | Ou seja: Quero combinar a linha um do arquivo teste com a 
| > | linha 
| > | > | dois, 
| > | > | > | linha um com a 3, e a 2 com a 3.
| > | > | > | 
| > | > | > | Adianto que a quantidade de linhas do arquivo teste pode 
| > | variar.
| > | > | > | 
| > | > | > | Agradeço qualquer ajuda.
| > | > | > | 
| > | > | > | Até!
| > | > | > | Luiz
| > | > | > | 
| > | > | > | 
| > | > | > | 
| > | > | > | ----------------------------------------------------------
| ----
| > | ----
| > | > | ---
| > | > | > | Esta lista não admite a abordagem de outras liguagens de 
| > | > | > | programação, como perl, C etc. Quem insistir em não 
| seguir 
| > | > | > | esta regra será moderado sem prévio aviso.
| > | > | > | ----------------------------------------------------------
| ----
| > | ----
| > | > | ---
| > | > | > | Sair da lista: address@hidden
| > | > | > | ----------------------------------------------------------
| ----
| > | ----
| > | > | ---
| > | > | > | Esta lista é moderada de acordo com o previsto em 
| > | > | > http://www.listas-discussao.cjb.net
| > | > | > ------------------------------------------------------------
| ----
| > | ----
| > | > | -
| > | > | >  
| > | > | > Links do Yahoo! Grupos
| > | > | 
| > | > | 
| > | > | 
| > | > | --------------------------------------------------------------
| ----
| > | ---
| > | > | Esta lista não admite a abordagem de outras liguagens de 
| > | > | programação, como perl, C etc. Quem insistir em não seguir 
| > | > | esta regra será moderado sem prévio aviso.
| > | > | --------------------------------------------------------------
| ----
| > | ---
| > | > | Sair da lista: address@hidden
| > | > | --------------------------------------------------------------
| ----
| > | ---
| > | > | Esta lista é moderada de acordo com o previsto em 
| > | > http://www.listas-discussao.cjb.net
| > | > ----------------------------------------------------------------
| ----
| > | -
| > | >  
| > | > Links do Yahoo! Grupos
| > | 
| > | 
| > | 
| > | ------------------------------------------------------------------
| ---
| > | Esta lista não admite a abordagem de outras liguagens de 
| > | programação, como perl, C etc. Quem insistir em não seguir 
| > | esta regra será moderado sem prévio aviso.
| > | ------------------------------------------------------------------
| ---
| > | Sair da lista: address@hidden
| > | ------------------------------------------------------------------
| ---
| > | Esta lista é moderada de acordo com o previsto em 
| > http://www.listas-discussao.cjb.net
| > --------------------------------------------------------------------
| -
| >  
| > Links do Yahoo! Grupos
| 
| 
| 
| ---------------------------------------------------------------------
| Esta lista não admite a abordagem de outras liguagens de 
| programação, como perl, C etc. Quem insistir em não seguir 
| esta regra será moderado sem prévio aviso.
| ---------------------------------------------------------------------
| Sair da lista: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
 
Links do Yahoo! Grupos




 
 


reply via email to

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