Olá Salviano Leão, sim a sua opcção funcionou, perfeitamente, agora começo a perceber a utilidade do cut.
Édnei Rodrigues o que queria mesmo era que o output fosse: /media/cdrom0 e não: /dev/scd0 como a seu exemplo fez. Obrigado a todos os que ajudaram ;) --- Em [email protected], "Édnei Rodrigues" <[EMAIL PROTECTED]> escreveu > > essa é fácil: > [EMAIL PROTECTED] ~]$ opcao="/dev/scd0 on" > [EMAIL PROTECTED] ~]$ echo $opcao | sed 's/ .*$//' > /dev/scd0 > > > pronto, cortado o "on" > > > Em 24/04/08, Salviano de Araujo Leão <[EMAIL PROTECTED]> escreveu: > > > > Em Wednesday 23 April 2008 15:29:51 miguelcm86 escreveu: > > > > Olá Miguel > > > > Você tem algo assim > > > > verify=$(mount | sed -n '/ iso9660 /{s/ type .*//;p}') > > > > Tente o seguinte: > > > > verify=$(mount | sed -n '/ iso9660 /{s/ type .*//;p}' | cut -d" " -f3) > > > > ele irá retorna somente o terceiro campo da váriavel cujo > > separador é o espaço. Neste caso a saída deverá ser: > > > > /media/cdrom0 > > > > Abraços > > > > Salviano > > > > > > > Olá > > > > > > Sim percebi perfeitramente, está a funcionar, escolhi a hipótese mais > > > fácil, ou melhor aquela que não tinha que alterar muita coisa: > > > > > > this_new_version=$(sed -n "/Ubunta_"$version_ubuntu"=/{s///;p}" version) > > > > > > foi só mudar de ' para ". > > > > > > As hipóteses colocados pelo mod já tinha experimentado e não funcionam. > > > > > > Mas afinal parece ser tão simples, foi só não perceber bem o conceito > > > do SED, e não saber que ele não assume as variáveis como tal. > > > > > > Tiago mais uma vez obrigado :D > > > > > > Mas já agora eu tendo uma expressão como faço para retirar só uma > > > parte dela... > > > tipo isto: > > > estou a tentar detectar onde está um CD inserido no sistema, estava a > > > pensar descobrir o caminho dele e testar se está lá os ficheiros do > > > Ubunta. > > > Estou a usar esta técnica para descobrir o caminho, que por acaso foi > > > você Tiago que me ensinou a fazer. > > > O problema é que só quero como output : "/media/cdrom0" > > > > > > > > > verify=$(mount | sed -n '/ iso9660 /{s/ type .*//;p}') > > > > > > o output que está a dar é este: > > > > > > /dev/scd0 on /media/cdrom0 > > > > > > > > > portanto falta retirar o "/dev/scd0 on " > > > > > > > > > Se podesse dar mais uma explicação, agradecia. > > > Abraços > > > > > > > > > --- Em [email protected]<shell-script%40yahoogrupos.com.br>, > > "Tiago Barcellos Peczenyj" > > > <tiago.peczenyj@> escreveu > > > > > > > Miguel. > > > > > > > > O sed em si não suporta (o conceito de) variaveis como outras > > > > linguagens script (como awk e o proprio bash). > > > > > > > > O que vc esta tentando fazer é criar um comando a partir de uma > > > > variavel de ambiente, e isso deve seguir algumas regras, veja só > > > > > > > > Ao inves de > > > > sed '/Ubunta_"$version_ubuntu"=/{s///;p}' > > > > Faça > > > > echo '/Ubunta_"$version_ubuntu"=/{s///;p}' > > > > > > > > o resultado é > > > > > > > > /Ubunta_"$version_ubuntu"=/{s///;p} > > > > > > > > ou seja, não é o que vc quer. Isso se deve ao fato do caracter ' > > > > (aspas) ser um caracter muito forte, pois TUDO dentro de aspas perde o > > > > seu poder especial. > > > > > > > > agora, usando aspas duplas > > > > > > > > echo "/Ubunta_${version_ubuntu}=/{s///;p}" > > > > /Ubunta_666=/{s///;p} > > > > > > > > (nesse caso eu fiz version_ubuntu=666 , hehe) > > > > > > > > O caracter " é menos forte, pois ele permite que o $ possa invocar uma > > > > variavel de ambiente. > > > > > > > > IMHO vc pode trabalhar sem o sed, assim: > > > > > > > > $ grep $(lsb_release -rs) /caminho/do/version | cut -d= -f2 > > > > 3.0 > > > > $ grep "Ubunta_version" /caminho/do/version | cut -d= -f2 > > > > 3.0 > > > > > > > > ou > > > > > > > > echo "versao do ubuntu ... $(grep $(lsb_release -rs) > > > > /caminho/do/version | cut -d= -f2)" > > > > > > > > Ok? > > > > > > > > Abraços > > > > > > > > T > > > > > > > > 2008/4/22 miguelcm86 <miguelcm86@>: > > > > > Olá pessoal > > > > > > > > > > Édnei Rodrigues é só para referir que ainda não testei aquele > > > > > > problema > > > > > > > > com o zenity, mas logo que tiver testado respondo à mensagem ;) > > > > > > > > > > Entretanto apareceu outro com mais prioridade e é referente ao > > > > > > comando > > > > > > > > SED. > > > > > > > > > > O código é este: > > > > > > > > > > cd ~/Desktop > > > > > version_ubunta_new=$(sed -n '/Ubunta_version=/{s///;p}' version) > > > > > version_ubuntu=$(lsb_release -rs) > > > > > this_new_version=$(sed -n '/Ubunta_"$version_ubuntu"=/{s///;p}' > > > > > > version) > > > > > > > > echo "$version_ubunta_new" > > > > > echo "nova versão.. $this_new_version" > > > > > > > > > > O ficheiro version: > > > > > > > > > > Ubunta_version=3.0 > > > > > Ubunta_7.04=1.0 > > > > > Ubunta_7.10=3.0 > > > > > Ubunta_8.04=3.0 > > > > > > > > > > O primeiro SED funciona perfeitamente, ele dá 3.0 como output, mas o > > > > > segundo já não está a dar. > > > > > O que quero é que ele leia do ficheiro version e guarde em > > > > > "this_new_version" o número referente à versão que possuo, dado pelo > > > > > comando lsb_release -rs. > > > > > > > > > > O facto de meter uma variável dentro do SED faz com que ele falhe. O > > > > > output é vazio. > > > > > > > > > > Obrigado > > > > > > > > > > Abraços > > > > > > > > -- > > > > Tiago B Peczenyj > > > > Linux User #405772 > > > > > > > > http://peczenyj.blogspot.com/ > > > > "what does not kill us makes us stronger" > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] >
