tail et perl :
tail -n x nom_fichier.xml | perl -pne 's/chaineA/chaineB/g' > nom_fichier_résultat.xml
(ou x nombre de ligne et chaineA, chaineB tes chaîne de caractère a échanger)
Et le tour est joué, même pas de code a écrire et ça mouline tout seul ;)
from os import chdir
chdir("/Volumes/GERTEX/_test/")
import shutil, string, re
obfic = open("taglist.xml","r") # Lecture ds le fichier taglist des 60 dernières lignes
lignes = obfic.readlines()[-59:]
obfic.close()
obfic = open("tampon_taglist.xml","w") # Copie ds le fichier tampon_taglist des 60 dernières lignes
obfic.write("".join(lignes))
s = '>442<'
re.sub(r'\s','>444<',s)
obfic.close()
shutil.copyfile('tampon_taglist.xml','nouveau_taglist.xml') # Copie de taglist.xml dans nouveau_taglist.xml
print "fin" # fin procédure
voilà avec votre aide j'en suis là.
J'arrive a recopier mes 60 lignes dans un autre fichier, mais lorsque je cheche à remplacer une chaine de caractère par une autre dans mon fichier xml je n'y arrive pas (442 en 444), pourriez vous me dire pourquoi?
de pls je cherche à recopier tout mon fichier tampon dans mon original mais à l'avant dernière ligne?
Ok pour infos j'ai revu mon prog et je vous propose cela.
Il fonctionne, par compte l me reste à copier depuis mon fichier tampon mes lignes en fin de fichier ds taglist.
print "début" # début procédure
from os import chdir
chdir("/Volumes/GERTEX/_test/")
import shutil, string, re
obfic = open("taglist.txt","r") # Lecture ds le fichier taglist des 60 dernières lignes
lignes = obfic.readlines()[-59:]
obfic.close()
obfic = open("tampon_taglist.txt","w") # Copie ds le fichier tampon_taglist des 60 dernières lignes
obfic.write("".join(lignes))
obfic.close()
chIn1 = raw_input('Remplacer la chaîne de caractères de id1 ')
chIn2 = raw_input('Par la nouvelle chaîne de caractère de id1 suivante ')
chIn3 = raw_input('Remplacer la chaîne de caractères de id2 ')
chIn4 = raw_input('Par la nouvelle chaîne de caractère de id2 suivante ')
chIn5 = raw_input('Remplacer le mnemonic ')
chIn6 = raw_input('Par le mnemonic suivant ')
s = open('/Volumes/GERTEX/_test/tampon_taglist.txt','r')
o = open('/Volumes/GERTEX/_test/taglist.txt','w')
for i in s.readlines():
o.write('%s\n' % i.replace(chIn1 , chIn2))
o.write('%s\n' % i.replace(chIn3 , chIn4))
o.write('%s\n' % i.replace(chIn5 , chIn6))
s.close()
o.close()
# tail et sed (par exemple)
Posté par NeoX . Évalué à -1.
pour savoir comment recuperer les N dernieres lignes
que tu passes à sed
man sed
pour savoir comment rechercher/remplacer
syntaxe approximative (car tu dois apprendre à chercher un peu ;-) )
tail -options N le_fichier | sed -options recherche/remplace >nouveau_fichier
[^] # Re: tail et sed (par exemple)
Posté par cho7 (site web personnel) . Évalué à 3.
En python, une solution triviale serait de faire un truc genre
print "begin"
fic = open("test.xml","r")
lignes = fic.readlines()[-3:]
fic.close()
nouveaufichier = []
for ligne in lignes:
nouveaufichier.append(ligne.replace("bou","pouet"))
fic = open("nouveau_test.xml","w")
fic.write("".join(nouveaufichier))
fic.close()
print "end"
Mais il doit surement exister plus simple, et pour des remplacements plus élaborés voir le module re d'expressions régulières
[^] # Re: tail et sed (par exemple)
Posté par NeoX . Évalué à 0.
c'est logique, et en plus, je dois avouer que je regarde rarement la categorie du post.
sinon apparemment ta solution en python semble etre plebiscité.
[^] # Re: tail et sed (par exemple)
Posté par Raphaël G. (site web personnel) . Évalué à 0.
tail -n x nom_fichier.xml | perl -pne 's/chaineA/chaineB/g' > nom_fichier_résultat.xml
(ou x nombre de ligne et chaineA, chaineB tes chaîne de caractère a échanger)
Et le tour est joué, même pas de code a écrire et ça mouline tout seul ;)
[^] # Re: tail et sed (par exemple)
Posté par supai . Évalué à 1.
Cela est super cool car je vai avoir un debut pour m'eclater avec le python.
Je pense que je vais revenir vous embêtez.
Merci encore et bonne année 2007 à tous
[^] # Re: tail et sed (par exemple)
Posté par supai . Évalué à 0.
j'ai un petit problème concernant la ligne
nouveaufichier.append(ligne.replace("bou","pouet"))
Peux tu me dire pourquoi elle ne passe pas avec un run.
Merci
[^] # Re: tail et sed (par exemple)
Posté par lolop (site web personnel) . Évalué à 1.
...ça serait pas un copier/coller rapide et un manque d'indentation de cette ligne par rapport à celle qui la précède...
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: tail et sed (par exemple)
Posté par supai . Évalué à 1.
from os import chdir
chdir("/Volumes/GERTEX/_test/")
import shutil, string, re
obfic = open("taglist.xml","r") # Lecture ds le fichier taglist des 60 dernières lignes
lignes = obfic.readlines()[-59:]
obfic.close()
obfic = open("tampon_taglist.xml","w") # Copie ds le fichier tampon_taglist des 60 dernières lignes
obfic.write("".join(lignes))
s = '>442<'
re.sub(r'\s','>444<',s)
obfic.close()
shutil.copyfile('tampon_taglist.xml','nouveau_taglist.xml') # Copie de taglist.xml dans nouveau_taglist.xml
print "fin" # fin procédure
voilà avec votre aide j'en suis là.
J'arrive a recopier mes 60 lignes dans un autre fichier, mais lorsque je cheche à remplacer une chaine de caractère par une autre dans mon fichier xml je n'y arrive pas (442 en 444), pourriez vous me dire pourquoi?
de pls je cherche à recopier tout mon fichier tampon dans mon original mais à l'avant dernière ligne?
merci de vos tuyaux?
@+
[^] # Re: tail et sed (par exemple)
Posté par supai . Évalué à 0.
Il fonctionne, par compte l me reste à copier depuis mon fichier tampon mes lignes en fin de fichier ds taglist.
print "début" # début procédure
from os import chdir
chdir("/Volumes/GERTEX/_test/")
import shutil, string, re
obfic = open("taglist.txt","r") # Lecture ds le fichier taglist des 60 dernières lignes
lignes = obfic.readlines()[-59:]
obfic.close()
obfic = open("tampon_taglist.txt","w") # Copie ds le fichier tampon_taglist des 60 dernières lignes
obfic.write("".join(lignes))
obfic.close()
chIn1 = raw_input('Remplacer la chaîne de caractères de id1 ')
chIn2 = raw_input('Par la nouvelle chaîne de caractère de id1 suivante ')
chIn3 = raw_input('Remplacer la chaîne de caractères de id2 ')
chIn4 = raw_input('Par la nouvelle chaîne de caractère de id2 suivante ')
chIn5 = raw_input('Remplacer le mnemonic ')
chIn6 = raw_input('Par le mnemonic suivant ')
s = open('/Volumes/GERTEX/_test/tampon_taglist.txt','r')
o = open('/Volumes/GERTEX/_test/taglist.txt','w')
for i in s.readlines():
o.write('%s\n' % i.replace(chIn1 , chIn2))
o.write('%s\n' % i.replace(chIn3 , chIn4))
o.write('%s\n' % i.replace(chIn5 , chIn6))
s.close()
o.close()
print "fin"
Et merci à vous pour vos infos.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.