Ok. Outra refinando sed 's/ *//g;s/\(.*\)#.*/\1/g' arquivo|grep -v "^$"|wc -l
s/ *//g => retira todos os espaços em branco s/\(.*\)#.*/\1/g => procura qualquer coisa seguido de # mais qualquer coisa e substitui pelo primeiro padrão \1 grep - retira linhas em branco 2009/7/16 denis costa <[email protected]> > > > 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]<deniscostadsc%40yahoo.com.br>> > escreveu: > > > De: denis costa <[email protected] <deniscostadsc%40yahoo.com.br> > > > Assunto: Re: [shell-script] sed script exclui comentários > Para: [email protected] <shell-script%40yahoogrupos.com.br> > 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] > > > -- 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]
