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

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

Re: [shell-script] sed script exclui comentários


From: denis costa
Subject: Re: [shell-script] sed script exclui comentários
Date: Thu, 16 Jul 2009 08:42:54 -0700 (PDT)

Servir serve...
Mas se vc testar no código em IDl que mandei pra lista verá que não funcionará, 
pois o grep ou o sed não exclui os comentários identados, ou seja que tenham 
espaços ou tabs, por isso o mesmo código funcionará em uma linguagem e não em 
outras. Na teoria deveria funcionar em qualquer linguagem que use o mesmo 
método de comentário, um símbolo especial na frente da linha, era só trocar o 
símbolo. Mas não consegui fazer funcionar... 
Muito provavelmente deve ser pela minha falta de conhecimento em sed, grep e 
regex!!! =^$

Muito Obrigado
--- Em qui, 16/7/09, César Vianna <address@hidden> escreveu:

De: César Vianna <address@hidden>
Assunto: Re: [shell-script] sed script exclui comentários
Para: address@hidden
Data: Quinta-feira, 16 de Julho de 2009, 11:26






 




    
                  Não sei se entendi errado, mas não serve a alternativa abaixo?



O primeiro grep remove linhas que iniciam com comentário e o segundo as

linhas em branco



~# grep -v "^#" /etc/apache2/ apache2.conf| grep -v "^$"|wc -l

45



2009/7/16 denis costa <deniscostadsc@ yahoo.com. br>



>

>

> os programas que estou usando para testar o contador de linhas "úteis"

>

> Programa bash

>

> #!/bin/bash

> #

> # Programa que cria aliases na quantidade necessária

> #

> # Para criar aliases a sintaxe é:

> # ./aliases.sh cria 1 2 (1 é a variação do terceiro octeto do IP e 2 a

> variação do quarto)

> # Para destruir aliases a sintaxe é:

> # ./aliases.sh destroi

>

> rede_base=168. 192

>

> mascara=255. 255.0.0

> contador=0

>

> if [ $1 == cria ]; then

>     echo "serão criados `expr $2 \* \( $3 + 1 \)` aliases"

>     sleep 3

>     for octeto_tres in `seq 1 $2`; do

>         for octeto_quatro in `seq 0 $3`; do

>             ifconfig eth0:$contador inet

> ${rede_base} .${octeto_ tres}.${octeto_ quatro} netmask $mascara

>             contador=$(expr $contador + 1)

>         done

>     done

> elif [ $1 == destroi ]; then

>     ifconfig eth0:0 down

> fi

>

> programa IDL

>

> pro grafico

>

> srf,'/mnt/proc026/ MOSAIC-00000968. univap2009. postgres/ dsm2.5/br090218_ 
> uva4kmco_ 001b1014_ 00000968. forward3_ dem_crs', dem

>

> srf,'/mnt/proc074/ denis/br090218_ uva4kmco2. 5_001b1014_ 00000463. forward4_ 
> dem_crs', dsm

>     ;Faz diferança

>     diff=dsm-dem

>     diffz=dem-dsm

>     ;Limpa as imagens de diferença

>     putdum,diff, 1000

>     putdum,diffz, 1000

>     ;Mostra a imagem de diferença

>     tvf,diffz,5, 5,-10,10

>     ;Calcula informação para gráficos

>     range=rebix( diff)

>     azimuth=rebiy( diff)

>     rangez=rebix( diffz)

>     azimuthz=rebiy( diffz)

>     ;Mostra gráficos

>     window,/free & !p.color=0

>     wset,33

>     plot,range,yrange= [-10,10], title='Range'

>     window,/free & !p.color=0

>     wset,34

>     plot,azimuth, yrange=[- 10,10],title= 'Azimuth'

>

>     for i=0, 100 do begin

>         print,"calculando range..."

>         wset,33

>         wait,3

>         plot,rangez, yrange=[- 10,10],title= 'Range'

>

>         print,"Phase Cal..."

>         print,"."

>         print,"...."

>         print,"..... .."

>         print,"..... ......"

>         print,"..... ......... "

>

>         for j=0, 100, 10 do begin

>             print,j,"%"

>             wait,1

>         endfor

>

>         print,"calculando azimuth..."

>         wset,34

>         wait,3

>         plot,azimuthz, yrange=[- 10,10],title= 'Azimuth'

>

>         print,"everything Ok!!!"

>         wset,33

>         wait,3

>         plot,range,yrange= [-10,10], title='Range'

>

>         print,"testing"

>         wset,34

>         wait,3

>         plot,azimuth, yrange=[- 10,10],title= 'Azimuth'

>     endfor

> end

>

> --- Em qui, 16/7/09, denis costa <deniscostadsc@ yahoo.com. br<deniscostadsc% 
> 40yahoo.com. br>>

> escreveu:

>

> De: denis costa <deniscostadsc@ yahoo.com. br <deniscostadsc% 40yahoo.com. br>

> >

> Assunto: Re: [shell-script] sed script exclui comentários

> Para: shell-script@ yahoogrupos. com.br <shell-script% 40yahoogrupos. com.br>

> Data: Quinta-feira, 16 de Julho de 2009, 10:05

>

>

>

> O esboço do programa está assim mas, quando vai contabilizar as linha

> "úteis" em idl ele não exclui da contagem as linha em branco isso só em IDL.

>

> #!/bin/bash

>

> linguagem=$( echo $1 | tr 'A-Z' 'a-z')

>

> case $linguagem in

>

>     bash|shell|shellscr ipt|sh|ksh| csh)

>

>

>         cat $2  | sed 's/#.*$//;/^ $/d' | wc -l

>

>     ;;

>

>     idl)

>

>         cat $2  | sed 's/;.*$//;/^ $/d' | wc -l

>

>     ;;

>

>     c)

>

>         echo "Calma! Ainda não pensei em C"

>

>     ;;

>

>     *)

>

>         echo "Linguagem não suportada."

>

>     ;;

>

> esac

>

> --- Em qui, 16/7/09, Jeiks <jacsonrcsilva@ gmail.com> escreveu:

>

> De: Jeiks <jacsonrcsilva@ gmail.com>

>

> Assunto: Re: [shell-script] sed script exclui comentários

>

> Para: shell-script@ yahoogrupos. com.br

>

> Data: Quinta-feira, 16 de Julho de 2009, 9:57

>

>

>

> o wc tah esquisito.. nao entendi o pq de estar errado

>

> quanto a outra dúvida, para comentários tanto com "#" quanto ";", use:

>

> sed 's/[#;].*$// ;/^$/d'

>

> abs

>

> 2009/7/16 denis costa <deniscostadsc@ yahoo.com. br>

>

> >

>

> >

>

> > essa soluão funciona perfeitamente em shell script:

>

> > sed 's/#.*$//;/^ $/d'

>

> >

>

> > mas como faria para usar o menos código em uma outra linguagem que usa

>

> > ponto e virgula (;) para comentário:

>

> > sed 's/\;.*$//;/ ^$/d'

>

> >

>

> > essa solução acima até funcionaou mas não exclui as linhas em branco

>

> >

>

> > --- Em qui, 16/7/09, jimmy <ronaldo_tgz@ yahoo.com. br<ronaldo_tgz%

> 40yahoo.com. br>>

>

> > escreveu:

>

> >

>

> > De: jimmy <ronaldo_tgz@ yahoo.com. br <ronaldo_tgz% 40yahoo.com. br>>

>

> >

>

> > Assunto: Re: [shell-script] sed script exclui comentários

>

> > Para: shell-script@ yahoogrupos. com.br <shell-script% 40yahoogrupos..

> com.br>

>

> > Data: Quinta-feira, 16 de Julho de 2009, 9:16

>

> >

>

> >

>

> >

>

> > On Thu, Jul 16, 2009 at 03:55:01AM -0700, denis costa wrote:

>

> >

>

> > > Olá a todos eu tenho um problema em um script...

>

> >

>

> > >

>

> >

>

> > > estava fazendo um script que contabilizava as linha de códigos-fontes

>

> > (excluindo linha em branco e comentários)

>

> >

>

> > > então fiz em sed para apagar o que começa com comentário e apagar as

>

> > linhas em branco:

>

> >

>

> > >

>

> >

>

> > > sed '/^#/d;/^$/d'

>

> >

>

> > >

>

> >

>

> > > mas assim ele só apaga no ínicio da linha, não apaga se tiver um espao

> ou

>

> > tab.

>

> >

>

> > >

>

> >

>

> > > outra solução era apagar do comentário até o fim da linha, mas esse

>

> > também apaga a linha toda:

>

> >

>

> > >

>

> >

>

> > > sed '/#/,/$/d;/^ $/d'

>

> >

>

> > >

>

> >

>

> > > Ou seja caso tenha um comentário após uma linha de código essa será

>

> > excluída da contagem final.

>

> >

>

> > >

>

> >

>

> > > Por favor me ajudem com o complexíssimo( sic) sed, pelo menos pra mim.

>

> >

>

> > >

>

> >

>

> > > Desde já agradeço a todos...

>

> >

>

> > >

>

> >

>

> > > E parabéns pela qualidade da lista a todos!!!

>

> >

>

> > >

>

> >

>

> > > Um abraço

>

> >

>

> > >

>

> >

>

> > > ------------ --------- --------- ------

>

> >

>

> > com o sed tente fazer:

>

> >

>

> > $ sed '/^\s*\(#\|$ \)/d;' arquivo

>

> >

>

> > ou

>

> >

>

> > $ sed '/^\s*[^#]\w/ !d' arquivo

>

> >

>

> > mas já que você quer contar:

>

> >

>

> > $ grep -E -c '^\s*[^#]\w' arquivo

>

> >

>

> > --

>

> >

>

> > "Não manejo bem as palavras

>

> >

>

> > Mas manipulo bem as strings."

>

> >

>

> > ------------ --------- ---------

>

> >

>

> > "Cada um usa a ferramenta que merece."

>

> >

>

> > ------------ --------- ---------

>

> >

>

> >

>

> >

>

> >

>

> >

>

> >

>

> >

>

> >

>

> >

>

> >

>

> >

>

> > ____________ _________ _________ _________ _________ _________ _

>

> > Veja quais são os assuntos do momento no Yahoo! +Buscados

>

> > http://br.maisbusca dos.yahoo. com

>

> >

>

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

>

> >

>

> >

>

> >

>

> --

>

> Jacson R. C. Silva

>

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

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

> ____________ _________ _________ _________ _________ _________ _

>

> Veja quais são os assuntos do momento no Yahoo! +Buscados

>

> http://br.maisbusca dos.yahoo. com

>

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

>

>

>

>

>

>

>

>

>

>

>

> ____________ _________ _________ _________ _________ _________ _

> Veja quais são os assuntos do momento no Yahoo! +Buscados

> http://br.maisbusca dos.yahoo. com

>

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

>

>  

>



-- 

César Vianna

------------ -------

Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às

unidades; os agenciamentos móveis aos sistemas.

Gilles Deleuze & Felix Guattari



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




 

      

    
    
        
         
        
        








        


        
        


      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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



reply via email to

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