Jump to content
Sign in to follow this  
nastymed

Question batch/replace sur fichiers multiples

Rate this topic

Recommended Posts

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!

Share this post


Link to post
Share on other 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

Edited by rdd

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...