SNIPPET: $REPLACETXT

cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 - 27 août 2004 à 01:48
cs_Huitre Messages postés 290 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 29 février 2008 - 30 août 2004 à 21:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/25729-snippet-replacetxt

cs_Huitre Messages postés 290 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 29 février 2008
30 août 2004 à 21:38
Ca change de $read ^^
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
30 août 2004 à 18:44
en file handling , 3secs pour un fichier de 20000 lignes :) c'est correct non?
cs_HeXoR Messages postés 165 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 15 avril 2010
30 août 2004 à 17:32
c le genre de truc qui doit ramer mechant avec un gros txt :/
_VeSpArO_ Messages postés 21 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 30 août 2004
27 août 2004 à 23:41
Ok je vais reprendre le code dans les jours qui viennent :) merci PaDa je vais prendre en compte ce que tu m'as dis!
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
27 août 2004 à 13:14
je maintiens que ça aurait été plus simple à faire avec le file handling .
cs_ReMi34 Messages postés 1025 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 28 mars 2005 2
27 août 2004 à 10:23
while (%o: <= a:) {

T'as oublié le % avant le a: :/
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
27 août 2004 à 02:28
je retire la boucle qui sert a rien :
%o: 0, %a: 1 puis while (%o: <= a:) et a chaque tour de boucle tu incrémentes %a: ... si yavait pas d'erreur de syntaxe avant -> freeze (1,2,3,4,...,10millions sont supérieurs a 0...)

vala le code de départ que je t'avais proposé sur le forum à epsilon près :
Alias replacetxt {
var %x 0, %i 1 , %imax $lines($1) , %2 = $+(/,$2,/g,$prop) , %L
while (%i <= %imax) {
inc %x $regsub($read($1,%i),%2,$3,%L)
write -l $+ %i $1 %L
inc %i
}
return %x
}

voici une version file handling certainement très optimisable , utilisant deux fichiers :
Alias replacetxt {
var %x 0, %2 = $+(/,$2,/g,$prop) , %L , %i 1 , %m $lines($1)
.fopen txt1 $1
.fopen -no txt2 tmp- $+ $1
while %i <= %m {
inc %x $regsub($fread(txt1),%2,$3,%L)
.fwrite -n txt2 %L
inc %i
}
.fclose txt?
.copy -o tmp- $+ $1 $1
.remove tmp- $+ $1
return %x
}
(tofu avait posté un truc aussi , cf le forum , du file handling mais en bien plus court et propre je crois)
reprends ton code si tu peux , je suis impatient de voir une version corrigée en hashtables :)
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
27 août 2004 à 01:48
$regsub(%H,$3,%H)
> * Invalid parameters: $regsub (line *,******.mrc)
syntaxe : $regsub(ce dans quoi on cherche, mask , remplacement , var ) donc il manque un argument

Sinon c'est ptet astucieux d'utiliser les hashtables (j'ai pas pigé tout le remote la encore) mais je pense que tu t'y prends mal :
avec $hfind tu vas trouver la n-ième item matchant un text et ensuite tu réécris par dessus la N-ième item tout court (qui n'est pas forcément la même) donc bon ... (d'ailleurs il manque certainement un argument a $hfind)

sinon dans le principe , il est tard mais voila ce que je pige pas : tu fais un hmake pour ta table , ok . elle est vide . tu fais un $hfind ensuite (enfin si ya le bon nombre d'arguement mais je doute fortement) , la table est toujours vide . et ensuite tu sauves la table (toujours vide) dans le fichier de départ ... en admettant que celle ci ne soit pas vide tu la sauves en binaire (switch -b) c'est du vice lol :p

enfin la boucle est inutile puisqu'il n'y a pas plusieurs tours

reprends un ti peu ton code , cette facon de faire peut etre très intéressante je pense mais la c'est pas fonctionnel ...ou chu endormi ... :(
Rejoignez-nous
A voir également