Aide script modification HTML bash

Aide script modification HTML bash - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 26-10-2015 à 19:40:05    

Bonjour à tous !  
Je dois écrire un script qui va chercher dans un répertoire passé en argument tous les fichiers html, puis remplacer tous les caractères accentués par leur code html (du genre : "é" par "à" )
 
J'ai essayé quelques trucs pour en arriver la, mais je suis bloqué sur le changement des caractères, au lieu de remplacer par le code, ça me remplace par le caractère accentué et son code...
 

Code :
  1. #!/bin/bash
  2. Rep=$1
  3. find $Rep/ -name "*.html" -type f -exec ls -l {} \;
  4. for i in $Rep/*.html
  5. do
  6. mv $i $i.old
  7. cat $i.old | sed -e 's/é/è"/g' > $i
  8. done


 
J'ai ce résultat : "éegrave;egrave;"egrave;
 
Le contenu de mon fichier d'origine est ééé
 
Et en plus, je n'arrive pas à modifier plusieurs caractères en même temps, je pourrai avoir un peu d'aide svp  :(


Message édité par valfone le 26-10-2015 à 21:01:40

---------------
ValFone
Reply

Marsh Posté le 26-10-2015 à 19:40:05   

Reply

Marsh Posté le 26-10-2015 à 21:54:28    

- & est un métacaractère donc attention à bien l'échapper

 

- sed prend directement un fichier en argument donc pas besoin de faire un cat| avant


Message édité par Misssardonik le 26-10-2015 à 21:54:49

---------------
Que va-t-il se passer cette gelgamar ? vous le découvrirez janamont à 20h
Reply

Marsh Posté le 27-10-2015 à 12:26:10    

J'ai trouvé ! :D
 
J'ai pris en compte tes remarques, elles m'ont aidé surtout avec le &.
J'ai ensuite cherché comment bien utiliser la commande sed -e que j'utilisais mal pour plusieurs caractères à changer. J'utilisais des | mais seulement les deux premiers caractères fonctionnaient.
 
Voila mon code :) (Je sais pas si il est optimal mais ça fonctionne c'est le principal !

Code :
  1. #!/bin/bash
  2. Rep=$1
  3. find $Rep/ -name "*.html" -type f -exec ls -l {} \;
  4. for i in $Rep/*.html
  5. do
  6. mv $i $i.old
  7. sed -e 's/é/\è/g ; s/é/\é/g ; s/ê/\ê/g ; s/à/\á/g ; s/â/\â/g' $i.old > $i
  8. done


 
Sur un fichier par exemple : é ê è à â
J'obtiens bien : è ê é á â

Message cité 1 fois
Message édité par valfone le 27-10-2015 à 12:27:21

---------------
ValFone
Reply

Marsh Posté le 27-10-2015 à 13:58:33    

valfone a écrit :


Code :
  1. 's/é/\è/g ; s/é/\é/g




T'as un problème là.


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 27-10-2015 à 20:12:31    

salut,
 
quel est l'intérêt du find ?
le mv ne sert à rien : l'option -i de sed permet de sauvegarder l'original en lui ajoutant l'extension en argument de l'option.

Reply

Marsh Posté le 28-10-2015 à 18:20:44    

o'gure a écrit :


T'as un problème là.


 
Oui, j'ai juste fait une faute de frappe avec é pour le deuxième c'est è, désolé.
 
 
 
 
Le find me sert pour m'afficher quels sont les fichiers html présents dans le dossier. En soit, je suis d'accord il ne sert à rien mais c'est juste pour m'indiquer ;)
Donc il faut que je mette plutôt "sed -e -i ..." ?


Message édité par valfone le 28-10-2015 à 18:21:15
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed