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

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

Re: Contar linha com texto - expressão regular


From: nerobarrabas
Subject: Re: Contar linha com texto - expressão regular
Date: Tue, 08 Oct 2013 13:28:37 -0000
User-agent: eGroups-EW/0.82

Versão final, incluindo a sugestão dos parceiros.
Notem que inclui a variável $IFS. Pois sem ela, não pegava linhas com mais de 
20 caracteres que contivessem espaços:

#!/bin/bash
IFS=$'\n'
for linha in $(cat arq.txt) 
do 
   if [ ${#linha} -ge 21  ] ; then
      echo $linha
   fi
done 

Diramos

--- Em address@hidden, "nerobarrabas" <diramos@...> escreveu
>
> Assim funfou.
> Boa! :)
> Vou anotar nos meus alfarrábios aqui.
> 
> Vlw.
> 
> Diramos
> 
> --- Em address@hidden, Cléoson Barreto <cleoson.barreto@> escreveu
> >
> > Olá!
> > 
> >  Tente ${#linha}.
> > 
> > []'s
> > Cléoson.
> > 
> > 
> > 
> > Em 8 de outubro de 2013 09:58, nerobarrabas <diramos@> escreveu:
> > 
> > > **
> > >
> > >
> > > Do jeito que falou, deu erro:
> > >
> > > $#linha: esperado expressão de número inteiro
> > >
> > > Diramos
> > >
> > > --- Em address@hidden, Tiago Peczenyj <tiago.peczenyj@>
> > > escreveu
> > >
> > > >
> > > > Ola
> > > >
> > > > vc fez de uma forma "pure shell" porem vc pode evitar o wc -L da 
> > > > seguinte
> > > > forma
> > > >
> > > > if [ $#linha -ge 20 ]; then
> > > >
> > > > onde $#variavel retorna o tamanho da variavel
> > > >
> > > >
> > > > 2013/10/8 nerobarrabas <diramos@>
> > > >
> > > > > **
> > >
> > > > >
> > > > >
> > > > > Fiz sem usar regexpr:
> > > > > O arquivo:
> > > > > $ cat arq.txt
> > > > >
> > > > > istotem17caracter
> > > > > istotem21caracteresss
> > > > > istotem22caracteressss
> > > > > istotem14carac
> > > > >
> > > > > #!/bin/bash
> > > > > for linha in $(cat arq.txt)
> > > > > do
> > > > > tamLinha=$(echo $linha | wc -L)
> > > > > if [ $tamLinha -ge 20 ] ; then
> > > > > echo $linha
> > > > > fi
> > > > > done
> > > > >
> > > > > Se quiser armazenar o resultado em novo arquivo, é só direcionar o 
> > > > > echo
> > > > > $linha prá ele. Assim:
> > > > >
> > > > > echo $linha >> arq1.txt
> > > > >
> > > > > Diramos
> > > > >
> > > > > --- Em address@hidden, Cyolfi Cyro <cyrocc@> escreveu
> > >
> > > > >
> > > > > >
> > > > > > Não vejo necessidade de uso de expressões regulares complexas no seu
> > > > > caso:
> > > > > >
> > > > > > grep termo_que_se_procura arquivo.log | wc -l
> > > > > >
> > > > > > Att.
> > > > > >
> > > > > > Cyro Ciolfi
> > > > > > (19) 98144 - 7944
> > > > > > Robotic Department@CTI Renato Archer (19) 3746-6237
> > > > > > Teacher@Metrocamp
> > > > > >
> > > > > >
> > > > > > 2013/10/8 Listeiros <listeiros@>
> > > > > >
> > > > > > > **
> > > > > > >
> > > > > > >
> > > > > > > Bom dia pessoal... Uma ajuda por favor,****
> > > > > > >
> > > > > > > ** **
> > > > >
> > > > > > >
> > > > > > > Tenho um log que contem N linhas e eu preciso retirar desse texto
> > > > > > > determinadas linhas que contenham as informações que preciso.****
> > > > > > >
> > > > > > > ** **
> > > > >
> > > > > > >
> > > > > > > O texto está todo misturado, mas as linhas válidas que eu preciso
> > > tem
> > > > > pelo
> > > > > > > menos mais de 20 caracteres. Então eu sei que essas linhas possuem
> > > as
> > > > > > > informações que eu quero. As demais linhas tem 2 ou 5 caracteres
> > > então
> > > > > > > posso descarta-las.****
> > > > > > >
> > > > > > > ** **
> > > > >
> > > > > > >
> > > > > > > Estive vendo que é mais simples fazer essa busca utilizando
> > > expressões
> > > > > > > regulares, mas como não conheço muito não estou conseguindo
> > > fazer.****
> > > > > > >
> > > > > > > ** **
> > > > >
> > > > > > >
> > > > > > > Como fiquei curioso para saber como funcionaria com expressão
> > > regular,
> > > > > > > será que alguém ai pode me ajudar nessa? ****
> > > > > > >
> > > > > > > ** **
> > > > >
> > > > > > >
> > > > > > > Como pode ser a expressão regular para exibir ou jogar num outro
> > > > > arquivo
> > > > > > > somente as linhas que tem mais de 20 caracteres?****
> > > > > > >
> > > > > > > ** **
> > > > > > >
> > > > > > > ** **
> > > > > > >
> > > > > > > Muito obrigado por qualquer ajuda!****
> > > > > > >
> > > > > > > ** **
> > > > > > >
> > > > > > > Até mais.****
> > > > >
> > > > > > >
> > > > > > > ---
> > > > > > > spam free by SafestMail4Outlook - www.sa4o.com
> > > > > > > <http://www.sa4o.com>
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Tiago B. Peczenyj
> > > > Linux User #405772
> > > >
> > > > http://about.me/peczenyj
> > > >
> > >
> > >  
> > >
> > 
> > 
> > 
> > -- 
> > []'s
> > Cléoson.
> > http://farinhadigital.blogspot.com/
> >
>




reply via email to

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