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

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

Re: [shell-script] Achar uma coluna


From: SuSE List
Subject: Re: [shell-script] Achar uma coluna
Date: Tue, 15 Mar 2005 18:30:57 -0300
User-agent: Mozilla Thunderbird 1.0 (Windows/20041206)

Achei Alain,

vou pegar carona nas respostas do meu amigo MrBits e do Aurelio:

-------- Original Message --------
Subject:        Re: RES: [shell-script] deletar ( parte 2)
Date:   Wed, 17 Nov 2004 23:44:12 -0000
From:   pinguimrmbr <address@hidden>
Reply-To:       address@hidden
To:     address@hidden



> dá pra usar um SEDão também:
> 
>   sed 's/\([A-Z]\) \([0-9]\)/\1, \2/'
> 
> que colocará a vírgula nesse padrão que você falou:
> 
> $ echo RUA PALMEIRAS 89 | sed 's/\([A-Z]\) \([0-9]\)/\1, \2/'
> RUA PALMEIRAS, 89
> 
> $ echo RUA DAS MOÇAS 89 | sed 's/\([A-Z]\) \([0-9]\)/\1, \2/'
> RUA DAS MOÇAS, 89

Holy shit !

Uma aplicacao pratica de "retrovisores", entao ?

E se eu tenho varios espacos entre MOÇAS e 89, esses espacos todos 
sao "ignorados", o mesmo acontecendo se eu tenho varios espacos entre 
RUA e DAS.

A pergunta é: POR QUE ?

echo RUA       PALMEIRAS      89 | sed 's/\([A-Z]\) \([0-9]\)/\1, \2/'

sempre me resulta em 

RUA PALMEIRAS, 89. 

Qual é a magica ? A expressao passada no sed nao é "substitua todos 
os caracteres maiusculos que encontrar, seguidos por um espaco, 
seguido por numeros, pelos seus retrovisores, separados por virgula e 
espaco"  ? 

A substituicao dos varios espacos entre PALMEIRAS e 89 faz sentido: 
imprimimos , Retrovisor da expressao 2 ([0-9]). Mas pq os espacos da 
RUA       PALMEIRAS sao compactados no Retrovisor 1 ?

[]´s

-------- Original Message --------

Subject:        Re: RES: [shell-script] deletar ( parte 2)
Date:   Thu, 18 Nov 2004 09:25:03 -0300 (ART)
From:   Aurelio Marinho Jargas <address@hidden>
Reply-To:       address@hidden
To:     address@hidden



alou mrbits,

--- pinguimrmbr <address@hidden> escreveu:

 > E se eu tenho varios espacos entre MOÇAS e 89, esses espacos
 > todos sao "ignorados", o mesmo acontecendo se eu tenho varios
 > espacos entre RUA e DAS.
 > A pergunta é: POR QUE ?
 >
 > echo RUA PALMEIRAS 89 | sed 's/\([A-Z]\) \([0-9]\)/\1,
 > \2/'
 >
 > sempre me resulta em
 >
 > RUA PALMEIRAS, 89.

hehehehe, correndo o risco de te fazer bater a cabeça na
parede, vou responder mesmo assim:

$ echo RUA PALMEIRAS 89
RUA PALMEIRAS 89

$ echo "RUA PALMEIRAS 89"
RUA PALMEIRAS 89

$

;)

=====
-- 
Aurelio Marinho Jargas, Curitiba, Conectiva

[]s

Vinny


SuSE List wrote:

> Beleza Alain,
>
> Eu parti do pressuposto que o shell/awk eliminam os espaços em branco
> desnecessarios......isso circulou aqui na lista um tempinho atras....me
> corrijam se eu estiver falando besteira.....
>
> Mas beleza, se ajudou, ja valeu a pena.......
>
> []s
>
> Vinny
>
> Alain wrote:
>
> > Oi Vini,
> >
> > Obrigado pela força, mas é mais complicado: Naquelas primeiras colunas,
> > poder um espaço em branco a mais :(( isso estraga todo o raciocínio por
> > colunas
> >
> > Pelo awk dá para separar por colunas fixas, mas preciso descobrir
> > primeiro que colunas são essas analizando a primeira linha
> >
> > ACHEI: ensando um pouco sobre o awk:
> >
> > echo "     remote           refid      st t when poll reach   delay
> > offset" | awk '{print match($0,"reach")}'
> >
> > responde 49
> >
> > agora eu posso fazer ${LINHA:49:5} e ter certeza que pequei o dado
> > certo. Esse script tem muito trabalho pela frente...
> >
> > Obrigado pelo apoio ;-)
> >
> > Alain
> >
> > SuSE List escreveu:
> > > Alain,
> > >
> > > Da pra fazer isso, usando " " como caracter separador de campos....em
> > > função disso cada campo tem um "espaço", o reach seria o setimo
> > > campo....com o que vc mandou fiz o seguinte teste:
> > > Também atentando que possa ter mais de um espaco em branco, seja no
> > > inicio ou no fim da coluna.....veja:
> > >
> > > msp01:/home/vinicius # cat texto.txt
> > > +ntp1.pucpr.br   tick.ucla.edu    2 u  716 1024  377   237.626   
> > 19.915
> > > 11.058
> > >   paulo.hiway.com Tick.UH.EDU      2 u  159 1024  377  385.982  
> > 77.252
> > > 427.978
> > >
> > > msp01:/home/vinicius # cat texto.txt | awk -F" " '{print
> > > $7"\t"$8"\t"$9"\t"$10}'
> > > 377     237.626 19.915  11.058
> > > 377     385.982 77.252  427.978
> > >
> > > msp01:/home/vinicius # cat texto.txt | awk -F" " '{print $7" "$8" "$9"
> > > "$10}'
> > > 377 237.626 19.915 11.058
> > > 377 385.982 77.252 427.978
> > >
> > > ou ainda, imprimindo também a primeira coluna também:
> > >
> > > msp01:/home/vinicius # cat texto.txt | awk -F" " '{print $1" "$7" "$8"
> > > "$9" "$10}'
> > > +ntp1.pucpr.br 377 237.626 19.915 11.058
> > > paulo.hiway.com 377 385.982 77.252 427.978
> > >
> > > msp01:/home/vinicius # cat texto.txt | awk -F" " '{print
> > > $1"\t"$7"\t"$8"\t"$9"\t"$10}'
> > > +ntp1.pucpr.br  377     237.626 19.915  11.058
> > > paulo.hiway.com 377     385.982 77.252  427.978
> > >
> > >
> > > O parametro "\t" entre aspas é o caracter de tabulação no awk....
> > > é isso que vc precisa?
> > >
> > > []s
> > >
> > > Vinny
> > >
> > > Alain wrote:
> > >
> > >
> > >>Eu não quis entupir a lista com listagens, mas aqui vai uma 
> nescessária.
> > >>O comando retorna:
> > >>
> > >>[root@servnet1 root]# ntpq -p
> > >>      remote           refid      st t when poll reach   delay   
> offset
> > >>  jitter
> > 
> >>==============================================================================
> > >>+ntp1.pucpr.br   tick.ucla.edu    2 u  716 1024  377  237.626   19.915
> > >>11.058
> > >>  paulo.hiway.com Tick.UH.EDU      2 u  159 1024  377  385.982   
> 77.252
> > >>427.978
> > >>
> > >>A primeira linha serve de título, eu preciso testar aquele 377 embaixo
> > >>do reach. Só que, vendo listas semelhantes na lista do ntp, acontece o
> > >>seguinte: 1) na segunda coluna (pulando o primeiro caracter) e na
> > >>terceira podem existir " ", e 2) a largura e quantidade das 
> colunas não
> > >>é sempre exata mas varia com as versões.
> > >>
> > >>Portanto eu preciso achar a posição da palavra "reach" na primeira 
> linha
> > >>para recortar as linhas apartir da terceira
> > >>
> > >>Alain
> > >>
> > >>SuSE List escreveu:
> > >>
> > >>>Alain,
> > >>>
> > >>>Estas colunas tem tamanho fixo??? Você quer ler a partir do primeiro
> > >>>caracter da coluna reach ate o final, desprezando os caracteres
> > >>>iniciaiss ou vc só quer exibir as 4 ultimas colunas......de um 
> exemplo
> > >>>que fica mais facil....pois existem varias formas de se fazer isso...
> > >>>
> > >>>Alain wrote:
> > >>>
> > >>>
> > >>>>Eu tenho a saída de um comando (ntpq) assim (primeira linha):
> > >>>>
> > >>>>     remote           refid      st t when poll reach   delay   
> offset
> > >>>> jitter
> > >>>>
> > >>>>como eu faço para ler a coluna em que começa a palavra "reach"? Ou
> > seja
> > >>>>o número de caracteres desde o começo da linha.
> > >>>>
> > >>>>grtato,
> > >>>>Alain
> > >>
> > >>
> > >>---------------------------------------------------------------------
> > >>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
> > >>---------------------------------------------------------------------
> > >>
> > >>
> > >>
> > >>*Yahoo! Grupos, um serviço oferecido por:*
> > >>
> > >>*
> > 
> >><http://br.rd.yahoo.com/SIG=12adu0u0d/M=264105.3931087.6562589.1588051/D=brclubs/S=2137111254:HM/EXP=1110993832/A=2361264/R=6/SIG=10v4acpp0/*http://br.shopping.yahoo.com/>*
> > >>    
> > >>
> > >>
> > 
> >>------------------------------------------------------------------------
> > >>*Links do Yahoo! Grupos*
> > >>
> > >>    * Para visitar o site do seu grupo na web, acesse:
> > >>      http://br.groups.yahoo.com/group/shell-script/
> > >>     
> > >>    * Para sair deste grupo, envie um e-mail para:
> > >>      address@hidden
> > >>     
> > <mailto:address@hidden?subject=Unsubscribe>
> > >>     
> > >>    * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
> > >>      Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
> > >>
> > >>
> > >
> > >
> > >
> > >
> > > [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: 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
> > ---------------------------------------------------------------------
> >
> >
> >
> > *Yahoo! Grupos, um serviço oferecido por:*
> >
> > *
> > 
> <http://br.rd.yahoo.com/SIG=12aj8ipc1/M=264105.3931087.6562589.1588051/D=brclubs/S=2137111254:HM/EXP=1111006012/A=2361264/R=6/SIG=10v4acpp0/*http://br.shopping.yahoo.com/>*
> >      
> >
> >
> > ------------------------------------------------------------------------
> > *Links do Yahoo! Grupos*
> >
> >     * Para visitar o site do seu grupo na web, acesse:
> >       http://br.groups.yahoo.com/group/shell-script/
> >       
> >     * Para sair deste grupo, envie um e-mail para:
> >       address@hidden
> >       
> <mailto:address@hidden?subject=Unsubscribe>
> >       
> >     * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
> >       Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
> >
> >
>
>
>
> [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: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
>
>
>
> *Yahoo! Grupos, um serviço oferecido por:*
>
> * 
> <http://br.rd.yahoo.com/SIG=12a8drruu/M=264105.3931087.6562589.1588051/D=brclubs/S=2137111254:HM/EXP=1111008035/A=2361264/R=6/SIG=10v4acpp0/*http://br.shopping.yahoo.com/>*
>       
>
>
> ------------------------------------------------------------------------
> *Links do Yahoo! Grupos*
>
>     * Para visitar o site do seu grupo na web, acesse:
>       http://br.groups.yahoo.com/group/shell-script/
>        
>     * Para sair deste grupo, envie um e-mail para:
>       address@hidden
>       <mailto:address@hidden?subject=Unsubscribe>
>        
>     * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
>       Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
>
>



[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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