Aller au contenu

Question batch/replace sur fichiers multiples


nastymed

Sujets conseillés

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!

Lien vers le commentaire
Partager sur d’autres sites

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/bash

for i in $( ls | grep -v convert_balise )
do
echo "`sed -e "s/embed/toto/g" "$i" | sed -s "s/>.*</>flipou</"`" >> "$i"_new
done

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é par rdd
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...