[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