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

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

Re: Expressões regulares usando SED


From: miguelcm86
Subject: Re: Expressões regulares usando SED
Date: Fri, 02 Nov 2007 20:34:53 -0000
User-agent: eGroups-EW/0.82

Olá
estou a manipular o valor desta forma
read=$(sed -n '/State=/{s///;p}' relatorio)

só que quando faço:
[ $read -lt 1 ] && teste && read=1
dá-me este erro:
line 13: [: -lt: operador unário esperado

Eu gostaria de que ele verifica-se o read se era menor que 1 e caso
isso acontece-se teria de entrar na função teste e por o read a 1.

Obrigado e abraços ;)

>
> Miguel, os raciocínios são varios até vc conseguir o que quer.
> 
> Quando vc apresentou o arquivo com esta linha:
> State=24
> 
> Genericamente vc procura por algo do tipo
> 
> Nome=Valor
> 
> Ou seja, tudo o que está antes do = é o nome da variavel, e depois é
o valor
> da mesma.
> 
> Uma forma, exata, de fazer isso é determinar a posição do caracter =
nessa
> palavra. Se fr na posição 6, por exemplo, eu sei que os 6-1
caracteres dessa
> linha é o nome da minha variavel e, da posição 7 em diante, é o seu
> conteúdo.
> 
> Porém isso é um processo chato. Se eu tenho isso:
> 
> Nome=Valor
> 
> e quero isso:
> 
> Valor
> 
> Não basta remover o a primeira parte dessa linha ? Se sim, o sed é
> fantastico pra isso
> 
> sed 's/Nome=//'
> 
> E se eu estivesse pensando em algo do tipo
> 
> Informação[delimitador]outra informação
> 
> Isso é tarefa pro awk
> 
> awk -F '=' '{ print $2 }' # ou seja, o segundo campo separado por '='
> 
> Enfim, depende da forma como vc vê o problema. Se é apenas manipular uma
> parte de um texto ou extrair uma determinada informação.
> 
> On 11/2/07, miguelcm86 <miguelcm86@...> wrote:
> >
> >   Boas pessoal
> >
> > Isto é que foi uma chuva de opções e uma demonstração do poder do
> > shell script.
> >
> > Já que estão numa de mostrar maneiras possíveis, era boa onda se
> > explicassem o raciocínio que tiveram e os comandos mais complicados
> > que usaram, pois algumas soluções como as que estão em baixo, que
> > sinceramente não é nada trivial, gera confusão.
> >
> > Abraços e obrigado a todos.
> >
> > --- Em address@hidden
<shell-script%40yahoogrupos.com.br>,
> > Fabiano Caixeta Duarte
> > <fcd.listas@> escreveu
> > >
> > > Gentil de Bortoli Jr escreveu:
> > > > On 11/1/07, miranda <miranda@> wrote:
> > > >> Veja uma outra opção :
> > > >>
> > > >> [miranda@guitar tmp]$ cat a
> > > >> State=15 The Bewlay Brothers Alternate Mix
> > > >> [miranda@guitar tmp]$ VAR1=$(grep State= a)
> > > >> [miranda@guitar tmp]$ echo $VAR1
> > > >> State=15 The Bewlay Brothers Alternate Mix
> > > >> [miranda@guitar tmp]$ VAR2=${VAR1#State=}
> > > >> [miranda@guitar tmp]$ echo $VAR2
> > > >> 15 The Bewlay Brothers Alternate Mix
> > > >
> > > > OK. Já que estamos demonstrando, vai mais uma, só a título de
> > curiosidade:
> > > >
> > > > [gentil@gentil:~]$ cat a
> > > > State=24
> > > > [gentil@gentil:~]$ IFS="=" ; set - $(cat a) ; echo $2
> > > > 24
> > >
> > > Já que as expressões regulares ficaram de lado faz tempo nesta
thread,
> > > vai mais uma solução:
> > >
> > > eval $(<a); echo $State
> > >
> > > --
> > > 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"
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

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