Derouler simultanement 2 variables

Pims -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

je suis sur u nprojet pour mettre a jour des fichier html

je doit donc faire différente modification sur le liens dans ces fichier ex: remplcer %20 par un espace et plusieur autre caractère

l'inconvenient et que j'ai stocké cette liste de caratère dans 2 fichier (carac spécial / carac remplacant ) pour qu'a l'avenir ce soit plus simple a modifier; cependant ca fait beaucoup d'operation d' I/O.

au debut de mon script je copie donc mes fichier chacun dans une variable.

puis je lance une boucle while en incrementant une variable pour au fur et a mesure recupérer le carc spécial et sont equivalent.

mais le faite de faire carc-spécial=$(echo liste_carac_special | cud -d: -f'$i') prend beaucoup de temps

auriez une solucion plus rapide a me proposer?

je souhaite garder le sistème de fichier pour une meilleur flexibilité pour l'avenir.

Merci

8 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Pour t'aider à optimiser ton traitement encore faudrait-il qu'on en comprenne toutes les subtilités ;-\

    Donc un petit exemple de ce que tu fais, fichier d'entrée, fichiers de correspondance et script seraient les bienvenus ;-)
    0
  2. Pims
     
    ex :

    Carac spéciaux | remplacant
    |
    & | &
    é | e
    Äô | a

    vaoici un exemple de mes fichier

    par la suite je recupère un lien html dans un fichier et fait un sed dessus

    ligne=$(echo ligne| sed 's|\'$carac-special'|\'$carac-remplacant'|g');

    il faut donc recupérer dans les variables carac-special et carac-remplacant les 2 caractère correspondant dans chacun des 2 fichier.

    attention cette opération ce produit à chaque nouveau lien (total environ 50 000 liens)

    merci
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Tu mets tes correspondances dans un fichier texte (encodage.sed) du genre :
    s/[éèêë]/e/g
    s/[àâä]/a/g
    s/Äô/a/g
    etc.
    Puis tu appelles ton fichier :
    ligne="$(echo $ligne| sed -f encodage.sed)"
    ;-))
    0
  4. Pims
     
    d'abord merci

    Mais ceraisse possible de faire ca ?

    s/[éèêë]/e/g
    s/[àâä]/a/g
    s/Äô/a/g
    etc.

    Puis tu appelles ton fichier :

    varsed=$(cat encodage.sed)

    ligne="$(echo $ligne| sed -f $varsed)"

    Merci
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Je ne vois pas l'intérêt ? ;-\
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Pims
     
    l'interert et de lire dans une variable (en Ram) qui aura ete chargé au début du soft plus que 1 acces fichier à chaque lien html dans mon fichier
    0
  7. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Ah ok... malheureusement non, on ne peut pas appeler le contenu d'une variable de cette manière avec "sed", il faut absolument que ce soit un fichier ;-(

    J'avais peut-être pensé au Sticky_Bit, mais normalement c'est valable pour un exécutable, donc je ne sais pas si ça le fera aussi sur un fichier en lecture seule ? ;-\
    0
  8. Pims
     
    Thx

    je test puis je te dit ce que ca donne
    0
  9. Pims
     
    dsl ca n'optimise pas beaucoupt

    Sinon est-il possible de mettre chaque ligne d'un fichier dans une variable différente

    je c que c possible

    mais ce qui serai bien c'est que ca ce fasse automatiquement avec une longueur de fichier quequonque et le nom des variable qui s'incremente tout seul?

    merci
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Dsl ca n'optimise pas beaucoup
      Comment t'y-es-tu pris ?

      Je pensais à ça :
      - Créé un script bash (foo.sh) avec :
      #! /bin/sh
      
      sed '
      s/[éèêë]/e/g
      s/[àâä]/a/g
      s/Äô/a/g
      ' <<<${@}
      - Rendre le fichier exécutable avec le sticky-bit :
      chmod 1755 foo.sh
      - Puis à l'intérieur de ton script, avoir une ligne de traitement du genre :
      ligne="$(./foo.sh ${ligne})" 
      À tester...
      0