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: César Vianna
Subject: Re: [shell-script] sed script exclui comentários
Date: Fri, 17 Jul 2009 14:26:00 -0300

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 <address@hidden>

>
>
> 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 
> <address@hidden<deniscostadsc%40yahoo.com.br>>
> escreveu:
>
>
> De: denis costa <address@hidden <deniscostadsc%40yahoo.com.br>
> >
> Assunto: Re: [shell-script] sed script exclui comentários
> Para: address@hidden <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]



reply via email to

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