Derouler simultanement 2 variables
Pims
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
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
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
-
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 ;-)
-
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 -
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)"
;-))
-
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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
-
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 ? ;-\
-
-
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-
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...
-