[Ubuntu-PT 9763] Re: comando seed com variáveis

Paulo J. S. Pinhal paulojspinhal gmail.com
Sexta-Feira, 19 de Outubro de 2012 - 11:23:44 UTC


Em 15-10-2012 22:19, Luis escreveu:
> Em 15-10-2012 14:00, Paulo J. S. Pinhal escreveu:
>> Em 12-10-2012 23:50, Luis escreveu:
>>> Em 12-10-2012 23:32, Paulo J. S. Pinhal escreveu:
>>>> boa noite a todos.
>>>> através do comando sed, quero adicionar num ficheiro (neste caso 
>>>> f1.txt) uma linha após de texto (cujo conteúdo está na em 
>>>> $variavel) após qualquer linha que apresente, por exemplo, PALAVRA. 
>>>> estou usando o exemplo abaixo, mas não funciona. alguém me pode 
>>>> ajudar?
>>>> sed '/PALAVRA/{p;s/.*/'$variavel'/;}' Comus.xml > f1.xml
>>>>
>>>> desde já meus agradecimentos.
>>>>
>>> Só uma pergunta: se o script começa com o parentesis, porque razão a 
>>> declaração começa com apóstrofo? Atenção, é só uma dúvida.
>>>
>>> Luis
>>>
>> E meu muito obrigado por V/ respostas.
>> Sempre achei o sed com um "aspeto" muito sombrio... resolvi criar o 
>> programa pretendido em python. muito mais simples...
>>
> Só por curiosidade, gostava de ver esse script em python.
>
> cumps Luis
>
Bom dia.
O script que fiz em Python (por achar que em bash é demasiado 
complicado) serviu para adaptar pistas do jogo Torcs para o Speed 
Dreams, que baixei de http://trackgen.pierlucalanzi.net/.
O código é o seguinte:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
from commands import *
import string

def Lista_de_Pastas():
     pastas= getoutput('ls').split("\n")
     auxiliar= []
     for p in range(0, (len(pastas)-1)):
         if not "." in str(pastas[p]):
             auxiliar.append(str(pastas[p]))
     return auxiliar
#FIM def Lista_de_Pastas():

def Dados_da_Pista(_pista):
     lista= _pista.split("-");
     cidade= lista[0];
     categoria= "road-"+lista[-1]
     return cidade, categoria
#FIM def Dados_da_Pista(_pista):

def Converte(_pista):
     auxiliar= _pista+".png"
     os.rename(auxiliar, "outline.png")
     os.rename("track.png", auxiliar)
     os.remove("convert_to_speeddreams.bat")
     os.remove("convert_to_speeddreams.sh")
#FIM def Converte(_pista):

def Altera_XML(_pista):
     str_de_referencia= "<attnum name=\"version\" val=\"4\" />"
     str_a_inserir= "<attnum name=\"sky version\" val=\"1\" />"
     cidade, categoria= Dados_da_Pista(_pista)
     arquivo=_pista+".xml"

     fp = open(arquivo, 'r')
     conteudo1 = fp.read()
     fp.close()

     fp = open(arquivo, 'w')
     conteudo2 = conteudo1.replace("\""+_pista+"\"", "\""+cidade+"\"")
     conteudo1 = conteudo2.replace("\"road\"", "\""+categoria+"\"")
     conteudo2 = conteudo1.replace(str_de_referencia, 
str_de_referencia+"\n    "+str_a_inserir)
     fp.write(conteudo2)

     fp.close()
#FIM def Altera_XML(_pista):

def Fala(_texto):
     _texto="espeak -a 150 -b 1 -g 10 -s 150 -v pt-pt " + _texto
     os.system(_texto);

def Executa():
     pastas= Lista_de_Pastas()
     for pasta in pastas:
         print "Convertendo a pasta: "+pasta
         os.chdir(str(pasta))
         Converte(pasta)
         Altera_XML(pasta)
         for ficheiro in os.listdir("."):
             os.chmod(ficheiro, 0644); #644
         os.chdir("..")
         os.chmod(pasta, 0755); #755
     print "Conversão terminada."
#FIM def Executa():

Executa()

Faço notar que esta foi minha primeira experiência com Python.





Mais informações acerca da lista ubuntu-pt