[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RES: RES: RES: RES: [shell-script] queimando a cuca!!!
From: |
lferreir1 |
Subject: |
Re: RES: RES: RES: RES: [shell-script] queimando a cuca!!! |
Date: |
Thu, 23 Sep 2004 15:17:10 -0000 |
User-agent: |
eGroups-EW/0.82 |
Matou a pau!
Eu nunca havia usado a shell bash, somente o KornShell nos meus
servidores Sun´s
Agora deu o resultado que queria.
Valeu mesmo a sua colaboração.
Aproveitando, Nem entrei no mérito da questão sobre o "livro shell"
veiculado aqui no grupo.
Eu tb tenho o seu livro, que foi ( e é ) uma mão na roda!
Dos muitos livros que tenho, destaco estes:
Unix & Linux - Soluções Rápidas
Charlie Russel e Sharon Crawford
Editora Berkeley
Curso Básico de Programação em
Posix_shell Script
Linux - HP-UX
Rodivaldo - Marcelo _Raimundo
Editora Book Express
E o seu Júlio, com certeza. Inclusive é muito bem humorado.
Até a próxima!
Luiz
--- Em address@hidden, Julio Cezar Neves -
DATAPREVRJ <julio.neves@p...> escreveu
> 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:julio.neves@p...
>
>
> | -----Mensagem original-----
> | De: lferreir1 [mailto:lferreir@e...]
> | 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: shell-script-
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