[shell-script] Re: substituir

2008-08-27 Por tôpico voyeg3r
como seria a solução em awk?


--- Em shell-script@yahoogrupos.com.br, "Fabiano Caixeta Duarte"
<[EMAIL PROTECTED]> escreveu
>
> 2008/8/26 Elvio Barbalho <[EMAIL PROTECTED]>:
> > Thiago sua sugestão não funcionou pois estou trabalhando num sistema
> > Solaris, testei num Linux e funcionou perfeitamente.
> >
> > Jimmy sua sugestão funcionou perfeitamente, agora supondo que o
arquivo
> > tenha uma quantidade impar de linhas, seguindo sua lógica como eu
faria para
> > o aquivo ficar assim:
> > 1
> > 2
> > 3
> > 4
> > 5
> >
> > 1-2
> > 3-4
> > 5-5
> 
> Continuo sentindo falta das tentativas realizadas pelos
> "perguntadores" para construção do conhecimento.
> 
> last=$(wc -l arquivo | cut -d" " -f1) #Número da última linha do arquivo
> [ $((last%2)) -eq 1 ] && sed ${last}p arquivo # se última linha é
> ímpar, duplique-a
> 
> 1
> 2
> 3
> 4
> 5
> 5
> 
> O resto você já sabe ;)
> 
> 
> -- 
> Fabiano Caixeta Duarte
> Especialista em Redes de Computadores
> Linux User #195299
> Ribeirão Preto - SP
>




Re: [shell-script] substituir

2008-08-27 Por tôpico jimmy
___

a solução do colega Fabiano Caixeta Duarte é bem melhor, se tivesse usado mais
a cabeça em vez do braço como ele fez teria feito isso melhor.

a minha solução não funciona independente do número de linhas ser par ou ímpar,
a dele funciona.

não queria usar o sed, é que na hora não tinha achado nenhuma outra alternativa,
queria usar apenas shell.

no sed eu fiz o seguinte:

$!s/ /-/# substitua todos os espaços com exceção da última linha
$s/.*/&-&/  # replique a última linha com um hífem entre elas

preferira mandar essas coisas para a lista sed-br que assino,
e deixar aqui somente shell mesmo.

___
On Tue, Aug 26, 2008 at 05:39:58PM -0300, Elvio Barbalho wrote:
> Jimmy funcionou blz aki, agora se não for muito não entendi nada o que vc
> fez no sed teria como me explicar
> 
> 2008/8/26 jimmy <[EMAIL PROTECTED]>
> 
> >   __
> >
> > usando o sed:
> >
> > seq 1 5 | xargs -l2 | sed '$!s/ /-/;$s/.*/&-&/'
> >
> > puramente em shell fica complicado.
> >
> > i=1
> > seq 1 5 | while true; do
> > read 'x' || exec echo $n
> > n=$x
> > if [ $(expr $i % 2) -eq 1 ]; then
> > echo -n "$x-"
> > else
> > echo $x
> > fi
> > let i++
> > done
> >
> > __
> >
> > On Tue, Aug 26, 2008 at 03:58:57PM -0300, Elvio Barbalho wrote:
> > > Thiago sua sugestão não funcionou pois estou trabalhando num sistema
> > > Solaris, testei num Linux e funcionou perfeitamente.
> > >
> > > Jimmy sua sugestão funcionou perfeitamente, agora supondo que o arquivo
> > > tenha uma quantidade impar de linhas, seguindo sua lógica como eu faria
> > para
> > > o aquivo ficar assim:
> > > 1
> > > 2
> > > 3
> > > 4
> > > 5
> > >
> > > 1-2
> > > 3-4
> > > 5-5
> > >
> > > 2008/8/26 jimmy <[EMAIL PROTECTED] >
> > >
> > > > __
> > > >
> > > > $ seq 10 | xargs -l2 | tr ' ' -
> > > >
> > > > mas a opção anterior é bem melhor.
> > > >
> > > > __
> > > >
> > > > On Tue, Aug 26, 2008 at 03:29:43PM -0300, Tiago Barcellos Peczenyj
> > wrote:
> > > > > Teste essa solução
> > > > > $ seq 10 | paste -d\- - -
> > > > >
> > > > > ou
> > > > >
> > > > > $ paste -d\- - - arquivo > novo.arquivo
> > > > >
> > > > > 2008/8/26 Elvio Barbalho <[EMAIL 
> > > > > PROTECTED]
> > 
> >
> > > > >:
> > > > > > Senhores boa tarde, estou com o seguinte problema:
> > > > > >
> > > > > > tenho um arquivo assim:
> > > > > >
> > > > > > 1
> > > > > > 2
> > > > > > 3
> > > > > > 4
> > > > > > 5
> > > > > > 6
> > > > > > 7
> > > > > > 8
> > > > > > 9
> > > > > > 10
> > > > > >
> > > > > > quero que ele saia assim:
> > > > > >
> > > > > > 1-2
> > > > > > 3-4
> > > > > > 5-6
> > > > > > 7-9
> > > > > > 9-10
> > > > > >
> > > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Tiago B Peczenyj
> > > > > Linux User #405772
> > > > >
> > > > > http://peczenyj.blogspot.com/
> > > > > "what does not kill us makes us stronger"
> > > > >
> > > > > 
> > > > >
> > > > > --
> > > > > 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: [EMAIL 
> > > > > PROTECTED]
> > 
> > > > > --
> > > > > Esta lista é moderada de acordo com o previsto em
> > > > http://www.listas-discussao.cjb.net
> > > > > --
> > > > > Servidor Newsgroup da lista: news.gmane.org
> > > > > Grupo: gmane.org.user-groups.programming.shell.brazil
> > > > >
> > > > > Links do Yahoo! Grupos
> > > > >
> > > > __
> > > >
> > > >
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > > 
> > >
> > > --
> > > 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: [EMAIL 
> > > PROTECTED]
> > > --
> > > Esta lista é moderada de acordo com o previsto em
> > http://www.listas-discussao.cjb.net
> > > --
> > > Servidor Newsgroup da lista: news.gmane.org
> > > Grupo: gman

Re: [shell-script] Re: substituir

2008-08-27 Por tôpico jimmy
___

On Wed, Aug 27, 2008 at 10:58:49AM -, voyeg3r wrote:
> como seria a solução em awk?

não seria algo para ser enviado para a lista awk-br? ela tá parada lá, só com
um desafio que deixei e mais nada.

seq 1 5 | awk '{if((NR%2)==1){ORS="-"}else{ORS="\n"}print 
$0}END{if((NR%2)==1){ORS="\n";print $0}}'

essa funciona com número de linhas pares e ímpares.

> 
> 
> --- Em shell-script@yahoogrupos.com.br, "Fabiano Caixeta Duarte"
> <[EMAIL PROTECTED]> escreveu
> >
> > 2008/8/26 Elvio Barbalho <[EMAIL PROTECTED]>:
> > > Thiago sua sugestão não funcionou pois estou trabalhando num sistema
> > > Solaris, testei num Linux e funcionou perfeitamente.
> > >
> > > Jimmy sua sugestão funcionou perfeitamente, agora supondo que o
> arquivo
> > > tenha uma quantidade impar de linhas, seguindo sua lógica como eu
> faria para
> > > o aquivo ficar assim:
> > > 1
> > > 2
> > > 3
> > > 4
> > > 5
> > >
> > > 1-2
> > > 3-4
> > > 5-5
> > 
> > Continuo sentindo falta das tentativas realizadas pelos
> > "perguntadores" para construção do conhecimento.
> > 
> > last=$(wc -l arquivo | cut -d" " -f1) #Número da última linha do arquivo
> > [ $((last%2)) -eq 1 ] && sed ${last}p arquivo # se última linha é
> > ímpar, duplique-a
> > 
> > 1
> > 2
> > 3
> > 4
> > 5
> > 5
> > 
> > O resto você já sabe ;)
> > 
> > 
> > -- 
> > Fabiano Caixeta Duarte
> > Especialista em Redes de Computadores
> > Linux User #195299
> > Ribeirão Preto - SP
> >
> 
> 
> 
> 
> 
> -
> 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: [EMAIL PROTECTED]
> -
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> -
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
> 
> Links do Yahoo! Grupos
> 
___


Re: [shell-script] Re: substituir

2008-08-27 Por tôpico Tiago Barcellos Peczenyj
q tal ?
$ seq 10 | awk '!(NR % 2) { print x "-" $0 } NR % 2 { x = $0 }'

2008/8/27 voyeg3r <[EMAIL PROTECTED]>:
> como seria a solução em awk?
>
> --- Em shell-script@yahoogrupos.com.br, "Fabiano Caixeta Duarte"
> <[EMAIL PROTECTED]> escreveu
>>
>> 2008/8/26 Elvio Barbalho <[EMAIL PROTECTED]>:
>
>> > Thiago sua sugestão não funcionou pois estou trabalhando num sistema
>> > Solaris, testei num Linux e funcionou perfeitamente.
>> >
>> > Jimmy sua sugestão funcionou perfeitamente, agora supondo que o
> arquivo
>> > tenha uma quantidade impar de linhas, seguindo sua lógica como eu
> faria para
>> > o aquivo ficar assim:
>> > 1
>> > 2
>> > 3
>> > 4
>> > 5
>> >
>> > 1-2
>> > 3-4
>> > 5-5
>>
>> Continuo sentindo falta das tentativas realizadas pelos
>> "perguntadores" para construção do conhecimento.
>>
>> last=$(wc -l arquivo | cut -d" " -f1) #Número da última linha do arquivo
>> [ $((last%2)) -eq 1 ] && sed ${last}p arquivo # se última linha é
>> ímpar, duplique-a
>>
>> 1
>> 2
>> 3
>> 4
>> 5
>> 5
>>
>> O resto você já sabe ;)
>>
>>
>> --
>> Fabiano Caixeta Duarte
>> Especialista em Redes de Computadores
>> Linux User #195299
>> Ribeirão Preto - SP
>>
>
> 



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


Re: [shell-script] Re: substituir

2008-08-27 Por tôpico jimmy
___

não funcionou com quantidade ímpares.

seq 9 | awk '!(NR % 2) { print x "-" $0 } NR % 2 { x = $0 }'
1-2
3-4
5-6
7-8

"comeu" o último caracter
___
On Wed, Aug 27, 2008 at 11:20:20AM -0300, Tiago Barcellos Peczenyj wrote:
> q tal ?
> $ seq 10 | awk '!(NR % 2) { print x "-" $0 } NR % 2 { x = $0 }'
> 
> 2008/8/27 voyeg3r <[EMAIL PROTECTED]>:
> > como seria a solução em awk?
> >
> > --- Em shell-script@yahoogrupos.com.br, "Fabiano Caixeta Duarte"
> > <[EMAIL PROTECTED]> escreveu
> >>
> >> 2008/8/26 Elvio Barbalho <[EMAIL PROTECTED]>:
> >
> >> > Thiago sua sugestão não funcionou pois estou trabalhando num sistema
> >> > Solaris, testei num Linux e funcionou perfeitamente.
> >> >
> >> > Jimmy sua sugestão funcionou perfeitamente, agora supondo que o
> > arquivo
> >> > tenha uma quantidade impar de linhas, seguindo sua lógica como eu
> > faria para
> >> > o aquivo ficar assim:
> >> > 1
> >> > 2
> >> > 3
> >> > 4
> >> > 5
> >> >
> >> > 1-2
> >> > 3-4
> >> > 5-5
> >>
> >> Continuo sentindo falta das tentativas realizadas pelos
> >> "perguntadores" para construção do conhecimento.
> >>
> >> last=$(wc -l arquivo | cut -d" " -f1) #Número da última linha do arquivo
> >> [ $((last%2)) -eq 1 ] && sed ${last}p arquivo # se última linha é
> >> ímpar, duplique-a
> >>
> >> 1
> >> 2
> >> 3
> >> 4
> >> 5
> >> 5
> >>
> >> O resto você já sabe ;)
> >>
> >>
> >> --
> >> Fabiano Caixeta Duarte
> >> Especialista em Redes de Computadores
> >> Linux User #195299
> >> Ribeirão Preto - SP
> >>
> >
> > 
> 
> 
> 
> -- 
> Tiago B Peczenyj
> Linux User #405772
> 
> http://peczenyj.blogspot.com/
> "what does not kill us makes us stronger"
> 
> 
> 
> -
> 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: [EMAIL PROTECTED]
> -
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> -
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
> 
> Links do Yahoo! Grupos
> 
___


Re: [shell-script] Re: substituir

2008-08-27 Por tôpico Tiago Barcellos Peczenyj
Ops...

$ seq 11 | awk '!(NR % 2) { print "-"$0 } NR % 2 { printf "%s",$0 }
END { print ""}'
1-2
3-4
5-6
7-8
9-10
11

sorry... não testei direito :$

2008/8/27 jimmy <[EMAIL PROTECTED]>:
> __
>
> não funcionou com quantidade ímpares.
>
> seq 9 | awk '!(NR % 2) { print x "-" $0 } NR % 2 { x = $0 }'
> 1-2
> 3-4
> 5-6
> 7-8
>
> "comeu" o último caracter
> __
>
> On Wed, Aug 27, 2008 at 11:20:20AM -0300, Tiago Barcellos Peczenyj wrote:
>> q tal ?
>> $ seq 10 | awk '!(NR % 2) { print x "-" $0 } NR % 2 { x = $0 }'
>>
>> 2008/8/27 voyeg3r <[EMAIL PROTECTED]>:
>> > como seria a solução em awk?
>> >
>> > --- Em shell-script@yahoogrupos.com.br, "Fabiano Caixeta Duarte"
>> > <[EMAIL PROTECTED]> escreveu
>> >>
>> >> 2008/8/26 Elvio Barbalho <[EMAIL PROTECTED]>:
>> >
>> >> > Thiago sua sugestão não funcionou pois estou trabalhando num sistema
>> >> > Solaris, testei num Linux e funcionou perfeitamente.
>> >> >
>> >> > Jimmy sua sugestão funcionou perfeitamente, agora supondo que o
>> > arquivo
>> >> > tenha uma quantidade impar de linhas, seguindo sua lógica como eu
>> > faria para
>> >> > o aquivo ficar assim:
>> >> > 1
>> >> > 2
>> >> > 3
>> >> > 4
>> >> > 5
>> >> >
>> >> > 1-2
>> >> > 3-4
>> >> > 5-5
>> >>
>> >> Continuo sentindo falta das tentativas realizadas pelos
>> >> "perguntadores" para construção do conhecimento.
>> >>
>> >> last=$(wc -l arquivo | cut -d" " -f1) #Número da última linha do
>> >> arquivo
>> >> [ $((last%2)) -eq 1 ] && sed ${last}p arquivo # se última linha é
>> >> ímpar, duplique-a
>> >>
>> >> 1
>> >> 2
>> >> 3
>> >> 4
>> >> 5
>> >> 5
>> >>
>> >> O resto você já sabe ;)
>> >>
>> >>
>> >> --
>> >> Fabiano Caixeta Duarte
>> >> Especialista em Redes de Computadores
>> >> Linux User #195299
>> >> Ribeirão Preto - SP
>> >>
>> >
>> >
>>
>>
>>
>> --
>> Tiago B Peczenyj
>> Linux User #405772
>>
>> http://peczenyj.blogspot.com/
>> "what does not kill us makes us stronger"
>>
>> 
>>
>> --
>> 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: [EMAIL PROTECTED]
>> --
>> Esta lista é moderada de acordo com o previsto em
>> http://www.listas-discussao.cjb.net
>> --
>> Servidor Newsgroup da lista: news.gmane.org
>> Grupo: gmane.org.user-groups.programming.shell.brazil
>>
>> Links do Yahoo! Grupos
>>
> __
> 



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


Re: [shell-script] Re: substituir

2008-08-27 Por tôpico jimmy
___


ficou legal.

___
On Wed, Aug 27, 2008 at 12:34:12PM -0300, Tiago Barcellos Peczenyj wrote:
> Ops...
> 
> $ seq 11 | awk '!(NR % 2) { print "-"$0 } NR % 2 { printf "%s",$0 }
> END { print ""}'
> 1-2
> 3-4
> 5-6
> 7-8
> 9-10
> 11
> 
> sorry... não testei direito :$
> 
> 2008/8/27 jimmy <[EMAIL PROTECTED]>:
> > __
> >
> > não funcionou com quantidade ímpares.
> >
> > seq 9 | awk '!(NR % 2) { print x "-" $0 } NR % 2 { x = $0 }'
> > 1-2
> > 3-4
> > 5-6
> > 7-8
> >
> > "comeu" o último caracter
> > __
> >
> > On Wed, Aug 27, 2008 at 11:20:20AM -0300, Tiago Barcellos Peczenyj wrote:
> >> q tal ?
> >> $ seq 10 | awk '!(NR % 2) { print x "-" $0 } NR % 2 { x = $0 }'
> >>
> >> 2008/8/27 voyeg3r <[EMAIL PROTECTED]>:
> >> > como seria a solução em awk?
> >> >
> >> > --- Em shell-script@yahoogrupos.com.br, "Fabiano Caixeta Duarte"
> >> > <[EMAIL PROTECTED]> escreveu
> >> >>
> >> >> 2008/8/26 Elvio Barbalho <[EMAIL PROTECTED]>:
> >> >
> >> >> > Thiago sua sugestão não funcionou pois estou trabalhando num sistema
> >> >> > Solaris, testei num Linux e funcionou perfeitamente.
> >> >> >
> >> >> > Jimmy sua sugestão funcionou perfeitamente, agora supondo que o
> >> > arquivo
> >> >> > tenha uma quantidade impar de linhas, seguindo sua lógica como eu
> >> > faria para
> >> >> > o aquivo ficar assim:
> >> >> > 1
> >> >> > 2
> >> >> > 3
> >> >> > 4
> >> >> > 5
> >> >> >
> >> >> > 1-2
> >> >> > 3-4
> >> >> > 5-5
> >> >>
> >> >> Continuo sentindo falta das tentativas realizadas pelos
> >> >> "perguntadores" para construção do conhecimento.
> >> >>
> >> >> last=$(wc -l arquivo | cut -d" " -f1) #Número da última linha do
> >> >> arquivo
> >> >> [ $((last%2)) -eq 1 ] && sed ${last}p arquivo # se última linha é
> >> >> ímpar, duplique-a
> >> >>
> >> >> 1
> >> >> 2
> >> >> 3
> >> >> 4
> >> >> 5
> >> >> 5
> >> >>
> >> >> O resto você já sabe ;)
> >> >>
> >> >>
> >> >> --
> >> >> Fabiano Caixeta Duarte
> >> >> Especialista em Redes de Computadores
> >> >> Linux User #195299
> >> >> Ribeirão Preto - SP
> >> >>
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> Tiago B Peczenyj
> >> Linux User #405772
> >>
> >> http://peczenyj.blogspot.com/
> >> "what does not kill us makes us stronger"
> >>
> >> 
> >>
> >> --
> >> 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: [EMAIL PROTECTED]
> >> --
> >> Esta lista é moderada de acordo com o previsto em
> >> http://www.listas-discussao.cjb.net
> >> --
> >> Servidor Newsgroup da lista: news.gmane.org
> >> Grupo: gmane.org.user-groups.programming.shell.brazil
> >>
> >> Links do Yahoo! Grupos
> >>
> > __
> > 
> 
> 
> 
> -- 
> Tiago B Peczenyj
> Linux User #405772
> 
> http://peczenyj.blogspot.com/
> "what does not kill us makes us stronger"
> 
> 
> 
> -
> 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: [EMAIL PROTECTED]
> -
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> -
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
> 
> Links do Yahoo! Grupos
> 
___