nastymed Posté 9 Juin 2008 Posté 9 Juin 2008 Bonjour a tous! Je recherche une solution a ce probleme : J'ai 200 fichiers sur lesquels j'aimerai remplacer tous les texts + la balise disons <embed .... </embed> . Les textes dans la balise sont différents pour tous les fichiers et il faut donc enlever tout ce qui est dans la balise + la balise elle même. Et j'ai besoin de remplacer ceci par une liste d'url que j'ai dans un fichier .txt (1 ligne par url). donc : balise <embed .... </embed> sur fichier "001" est remplacée par url en ligne 1 balise <embed .... </embed> sur fichier "002" est remplacée par url en ligne 2 etc J'ai trouvé des petits softs qui permettent de modifier des fichiers multiples mais ils n'ont que l'option basique "find/replace". Le texte doit être exacte pour être remplacé. Dans mon cas, ça ne marche pas car le texte est différent sur chaque fichier. Quelqu'un connaitrait-il une script ou un soft me permettant de faire ceci ? Merci d'avance!
rdd Posté 9 Juin 2008 Posté 9 Juin 2008 (modifié) Salut nastymed, As-tu une preference pour l'interpreteur ou pas ? (bash, perl ou un prog en C). Car tu peux realiser cela assez facilement avec sed en bash, ou awk, mais un peu plus complexe. A savoir aussi si tous tes fichiers sont dans le meme dossier ou pas. Une petite ebauche : #!/bin/bashfor i in $( ls | grep -v convert_balise )doecho "`sed -e "s/embed/toto/g" "$i" | sed -s "s/>.*</>flipou</"`" >> "$i"_newdone Le script s'appelle convert_balise et tous les fichiers que tu cherches a remplacer sont dans le meme dossier. Le script remplace les balises embed par toto, et remplace ce qui se trouve entre les balise par flipou. Les modifications effectuees sont ecrites dans un fichier portant le meme nom que celui d'origine avec _new a la fin (ex ton fichier d'entree s'appelle test_file, le fichier avec les modifs s'appellera test_file_new) Voila Modifié 9 Juin 2008 par rdd
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant