outra coisa que esqueci de falar César Vianna, essa solução as linha indesejadas se o comentário estiver identado:
solução: grep -v "^#" arquivo | grep -v "^$" exemplo #!/bin/bash #este programa não faz nada #e não escreve nada echo "NADA" depois de processar: #e não escreve nada echo "NADA" --- Em qui, 16/7/09, denis costa <[email protected]> escreveu: De: denis costa <[email protected]> Assunto: Re: [shell-script] sed script exclui comentários Para: [email protected] Data: Quinta-feira, 16 de Julho de 2009, 12:42 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 <cesar.vianna@ gmail.com> escreveu: De: César Vianna <cesar.vianna@ 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, 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.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.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
