CSH : modifier certains mots d'un fichier à partir d'un autre fichier

CSH : modifier certains mots d'un fichier à partir d'un autre fichier - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-04-2016 à 13:40:23    

Bonjour,
 
J'ai un fichier XML évolutif au sein duquel j'aimerais remplacer des noms de ville à partir d'identifiant contenu dans une table de correspondance. pour chaque occurence du fichier.
 
exemple : table de correspondance
 
PARIS;75000
BORDEAUX;33000
 
J'étais parti sur un sed mais j'ai beau creuser je ne trouve pas.
 
Quelqu'un peut il m'aider SVP.
A votre disposition si vous avez besoin d'informations complémentaires.
 
J'ai déjà la boucle

Code :
  1. while read line
  2. do
  3. var1=$( echo "$line" | sed -n -E 's/.*Station="(.*)".*Value.*/\1/ p' )
  4. if [ "$var1" ] ; then
  5.  var2=$(echo "$var1" | tr a-z A-Z | cut -c 1-4)
  6.  echo -e "$line" | sed -n -E "s/${var1}/${var2}/ g" >> new_fichier.xml
  7. else
  8.  echo -e "$line" >> new_fichier.xml 
  9. fi
  10. done < fichier.xml


 
Merci beaucoup

Reply

Marsh Posté le 27-04-2016 à 13:40:23   

Reply

Marsh Posté le 27-04-2016 à 14:11:39    

Si le résultat de la ligne 6 correspond à l'élément que tu souhaites chercher dans ton fichier de correspondance alors tu as juste à rajouter une ligne en dessous pour faire un grep dans ton fichier de correspondance + awk pour récupérer la correspondance.
 
C'est pas super propre car t'es obligé de re-parser le fichier à chaque loop mais si csh ne gère pas les hash (peut-être que si ?) tu as pas trop le choix.
 
Après ça serait probablement mieux de le faire en perl/python qui gèrent très facilement ce genre de trucs.


Message édité par _lael_ le 27-04-2016 à 14:16:46
Reply

Sujets relatifs:

Leave a Replay

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