déjà, tu voulais surement taper fichier1 dans ta ligne de awk. A mon avis, c'est une typo.
Sinon, tu as un problème sur le system("`$i`"). $i n'est pas défini pour awk. Vu que awk est un nouveau process, il n'hérite pas de la variable $i. Pour que awk connaisse $i, il faut que tu rajoutes "export i" dans ta boucle.
Je ne sais pas si ça suffit (pas testé), mais ça ne peut que améliorer les choses :)
bon, ça répond pas à la question en awk, mais vu que tu fais déjà une boucle sur tous les éléments de fichier2, pourquoi ne pas remplacer ton awk par un grep bien choisi ? (à mon avis plus performant)
"J'avais pas précisé que numclient est pas ds commande"
erreur ! c'est un point essentiel !
Le problème principal de ta requête initiale, c'est que tu ne fais aucun lien entre la ligne de la table commande que tu es en train de mettre à jour et le select de la valeur. Il y a bien la table commande dans les deux cas, mais ton select travaille sur toute la table commande, au lieu de ne travailler que sur la ligne intéressante.
Il faut que tu explicites le lien entre une commande et un client.
S'il n'y a pas de numclient dans commande, comment tu lies une commande et un client ? (la table affaire ?)
Les requêtes d'update un peu complexe, c'est le truc que j'ai mis le plus de temps à intégrer. Pour bien comprendre ce que je fais, je travaille séparément sur les clauses WHERE. La clause WHERE sur la table commande (la seconde ici) sert à limiter le nombre de lignes qu'on va traiter. Ce qu'il faut arriver à se mettre dans le crâne, c'est que quand on travaille sur la clause WHERE dans le SET (la première), on ne travaille plus sur toute la table commande, mais sur une seul des lignes sélectionnée par le WHERE sur la table commande.
Pour que la valeur qu'on met dans le SET corresponde à quelquechose, il faut absolument faire le lien avec la table commande qu'on update, et pas avec la table commande en général. Un truc du genre
update commande C -- nommer la table pour pouvoir l'utiliser après
set activitecmde = (select t.valeur
from table t
where T.un_champ = C.un_champ -- la relation entre la table et le select
... -- le reste de la clause WHERE)
where c.activitecmde < 20;
Pour répondre plus précisément à ta situation, il faut que tu explicites le lien entre une commande et un client.
Posté par gaaaaaAab .
En réponse au message AWK.
Évalué à 2.
des précisions sur la nature de la base de données ?
Si c'est une base type mysql, postgres, oracle ou autre, je vois pas bien ce qui fait le lien entre awk et la base ...
Si la base de données est stockée dans des fichiers plats, ça a déjà plus de sens. Mais même comme ça, awk serait pas mon langage de choix pour bosser là dessus ...
je viens de demander à copain google, et PFE, c'est pour faire du Forth.
Il faudrait surement faire s/AWK/FORTH dans le sujet ;)
bizarre ça. Je viens de faire quelques tests chez moi. Ca marche nickel.
à moins que tu sois en POSIX.1-1996 (vu que le man dit que ça existe pas dans cette norme là), ça devrait marcher aussi chez toi ...
Le truc qui me plait pas trop dans ton prog de test, c'est le nom du fichier en dur.
Il suffit d'ajouter (int argc, char** argv) en paramètre de ton main et un argv[1] à la place du nom du fichier pour faire pleins de tests en étant sûr de pas s'emmeler les pinceaux dans la création de fichiers. Attention, argv[1], pas argv[0]. Je viens betement de perdre un quart d'heure là dessus :p
extrait du man (qu'en anglais sous la main ...) lstat is identical to stat, except in the case of a symbolic link,
where the link itself is stat-ed, not the file that it refers to.
Pour l'instant, nous (les gentils :) n'avons réussi qu'à obtenir un match nul sur un seul front de la bataille sans jamais prendre l'initiative. Si on veut obtenir une directive acceptable, il ne faut pas laisser les pro-brevets rédiger les propositions suivantes, mais proposer quelque chose.
Le débat n'étant pas fini, la FFII reste en première ligne.
Je t'invites à prendre contact avec eux (www.ffii.fr et www.ffii.org). Vous pourrez peut-être avancer ensemble.
make s'appuie sur la date des fichiers pour savoir s'il doit recompiler quelquechose. En gros, s'il détecte que le fichier "source" est plus récent que le fichier généré, il "recompile".
Si ton script regénère tous tes fichiers SVG à chaque fois, make pourra pas trop t'aider, parce qu'en regardant les dates, il recompilera toujours tout. Par contre, si ton script ne génère que les SVG modifiés, là, il suffit de pondre la règle permettant de construire un png à partir d'un SVG, et make s'en sortira très bien.
Si tous tes fichiers SVG sont générés à chaque fois, va falloir trouver autre chose ...
une piste, c'est trouver un moyen pour que ton script d'extraction de la BD ne génère que les SVG modifés (ajout de dates dans la base, positionnement d'un booleen, autre chose ?)
les md5, c'est une autre piste. Comment faire ? Ben par exemple, tu stockes dans un fichier tous les md5 de tes fichiers SVG. A chaque compil, tu recalcules ces md5 dans un nouveau fichier. Tu fais un bête diff et un peu de cut ou de sed et hop, t'as la liste de tes fichiers modifiés.
"si un spammer doit multiplier le nombre de machines qu'il a par 100 pour envoyer le meme nombre d'e-mails, ca rend son operation bcp moins rentable par contre"
# pour awk
Posté par gaaaaaAab . En réponse au message passer des paramettres à AWK. Évalué à 2.
Sinon, tu as un problème sur le system("`$i`"). $i n'est pas défini pour awk. Vu que awk est un nouveau process, il n'hérite pas de la variable $i. Pour que awk connaisse $i, il faut que tu rajoutes "export i" dans ta boucle.
Je ne sais pas si ça suffit (pas testé), mais ça ne peut que améliorer les choses :)
# et grep ?
Posté par gaaaaaAab . En réponse au message passer des paramettres à AWK. Évalué à 2.
[^] # Re: Si j'ai bien compris ta demande...
Posté par gaaaaaAab . En réponse au message Requete update délicate. Évalué à 2.
erreur ! c'est un point essentiel !
Le problème principal de ta requête initiale, c'est que tu ne fais aucun lien entre la ligne de la table commande que tu es en train de mettre à jour et le select de la valeur. Il y a bien la table commande dans les deux cas, mais ton select travaille sur toute la table commande, au lieu de ne travailler que sur la ligne intéressante.
Il faut que tu explicites le lien entre une commande et un client.
S'il n'y a pas de numclient dans commande, comment tu lies une commande et un client ? (la table affaire ?)
Les requêtes d'update un peu complexe, c'est le truc que j'ai mis le plus de temps à intégrer. Pour bien comprendre ce que je fais, je travaille séparément sur les clauses WHERE. La clause WHERE sur la table commande (la seconde ici) sert à limiter le nombre de lignes qu'on va traiter. Ce qu'il faut arriver à se mettre dans le crâne, c'est que quand on travaille sur la clause WHERE dans le SET (la première), on ne travaille plus sur toute la table commande, mais sur une seul des lignes sélectionnée par le WHERE sur la table commande.
Pour que la valeur qu'on met dans le SET corresponde à quelquechose, il faut absolument faire le lien avec la table commande qu'on update, et pas avec la table commande en général. Un truc du genre
update commande C -- nommer la table pour pouvoir l'utiliser après
set activitecmde = (select t.valeur
from table t
where T.un_champ = C.un_champ -- la relation entre la table et le select
... -- le reste de la clause WHERE)
where c.activitecmde < 20;
Pour répondre plus précisément à ta situation, il faut que tu explicites le lien entre une commande et un client.
# plus d'infos ?
Posté par gaaaaaAab . En réponse au message utilisation d'un scanner distant. Évalué à 4.
Dans les classiques, un firewall qui bloquerait le mauvais port ?
sinon, des fichiers de logs ?
accessoirement, le deuxième système, c'est un linux aussi ou un windows ?
# awk ?
Posté par gaaaaaAab . En réponse au message AWK. Évalué à 2.
Si c'est une base type mysql, postgres, oracle ou autre, je vois pas bien ce qui fait le lien entre awk et la base ...
Si la base de données est stockée dans des fichiers plats, ça a déjà plus de sens. Mais même comme ça, awk serait pas mon langage de choix pour bosser là dessus ...
je viens de demander à copain google, et PFE, c'est pour faire du Forth.
Il faudrait surement faire s/AWK/FORTH dans le sujet ;)
je connais un peu awk, mais pas du tout Forth ...
# sed
Posté par gaaaaaAab . En réponse au message GREP : Comment obtenir l'ensemble des lignes contenant "toto". Évalué à 2.
[^] # Re: lstat
Posté par gaaaaaAab . En réponse au message parcours d'une arborescence de fichier. Évalué à 2.
fais profiter ! fais profiter !
Il se passait quoi ? :)
[^] # Re: lstat
Posté par gaaaaaAab . En réponse au message parcours d'une arborescence de fichier. Évalué à 2.
à moins que tu sois en POSIX.1-1996 (vu que le man dit que ça existe pas dans cette norme là), ça devrait marcher aussi chez toi ...
Le truc qui me plait pas trop dans ton prog de test, c'est le nom du fichier en dur.
Il suffit d'ajouter (int argc, char** argv) en paramètre de ton main et un argv[1] à la place du nom du fichier pour faire pleins de tests en étant sûr de pas s'emmeler les pinceaux dans la création de fichiers. Attention, argv[1], pas argv[0]. Je viens betement de perdre un quart d'heure là dessus :p
[^] # Re: Problème de PATH
Posté par gaaaaaAab . En réponse au message aide pour adduser. Évalué à 2.
chez moi, ça serait
# /usr/sbin/useradd
plutôt que # /sbin/useradd
# lstat
Posté par gaaaaaAab . En réponse au message parcours d'une arborescence de fichier. Évalué à 2.
lstat is identical to stat, except in the case of a symbolic link,
where the link itself is stat-ed, not the file that it refers to.
# traduc
Posté par gaaaaaAab . En réponse au message Participation a linux - traduction. Évalué à 2.
[^] # Re: À l'attaque !
Posté par gaaaaaAab . En réponse à la dépêche Les eurodéputés rejettent la directive sur le brevet des logiciels. Évalué à 5.
Le débat n'étant pas fini, la FFII reste en première ligne.
Je t'invites à prendre contact avec eux (www.ffii.fr et www.ffii.org). Vous pourrez peut-être avancer ensemble.
[^] # Re: merci
Posté par gaaaaaAab . En réponse à la dépêche Les eurodéputés rejettent la directive sur le brevet des logiciels. Évalué à 3.
http://www.ffii.org/ffii-cgi/eintrag?m=n&l=fr(...)
[^] # Re: Science fiction... 1984?
Posté par gaaaaaAab . En réponse à la dépêche Manifestation contre les brevets logiciels au Parlement Européen à Strasbourg. Évalué à 2.
et il l'a fait :)
[^] # Makefile
Posté par gaaaaaAab . En réponse au message Makefile sur une génération dynamique de fichier.. Évalué à 2.
Si ton script regénère tous tes fichiers SVG à chaque fois, make pourra pas trop t'aider, parce qu'en regardant les dates, il recompilera toujours tout. Par contre, si ton script ne génère que les SVG modifiés, là, il suffit de pondre la règle permettant de construire un png à partir d'un SVG, et make s'en sortira très bien.
Si tous tes fichiers SVG sont générés à chaque fois, va falloir trouver autre chose ...
une piste, c'est trouver un moyen pour que ton script d'extraction de la BD ne génère que les SVG modifés (ajout de dates dans la base, positionnement d'un booleen, autre chose ?)
les md5, c'est une autre piste. Comment faire ? Ben par exemple, tu stockes dans un fichier tous les md5 de tes fichiers SVG. A chaque compil, tu recalcules ces md5 dans un nouveau fichier. Tu fais un bête diff et un peu de cut ou de sed et hop, t'as la liste de tes fichiers modifiés.
[^] # Re: un peu plus d'infos
Posté par gaaaaaAab . En réponse au journal La fin de Gandi?. Évalué à 1.
http://www.neteconomie.com/perl/navig.pl/neteconomie/infos/article/(...)
vu la tonalité de l'article, ça a l'air d'être un "particulier" plus qu'une boite qui a repris le truc ...
[^] # Re: Mais...
Posté par gaaaaaAab . En réponse à la dépêche Manifestation contre les brevets logiciels au Parlement Européen à Strasbourg. Évalué à 1.
[^] # Re: un peu plus d'infos
Posté par gaaaaaAab . En réponse au journal La fin de Gandi?. Évalué à 1.
http://embruns.net/mt3/reactions.cgi?entry_id=2599(...) (numéro 14)
[^] # Re: Une distribution, ça s'achète ?
Posté par gaaaaaAab . En réponse au sondage Que conseiller à Mandriva de racheter ?. Évalué à 6.
# -I CVS ?
Posté par gaaaaaAab . En réponse au message CVS ignored files. Évalué à 1.
cf http://lists.gnu.org/archive/html/info-cvs/2004-12/msg00000.html(...)
lui s'en est sorti en rajoutant un -ICVS
# un peu plus d'infos
Posté par gaaaaaAab . En réponse au journal La fin de Gandi?. Évalué à 2.
http://www.journaldunet.com/0506/050628gandi.shtml(...)
[^] # Re: Invitations gmail...
Posté par gaaaaaAab . En réponse à la dépêche Sender ID, passage en force de Microsoft. Évalué à 1.
y a effectivement un anti-spam sur yahoo!. Et je précise qu'on peut le désactiver si on en veut pas.
[^] # Re: Brevets?
Posté par gaaaaaAab . En réponse à la dépêche Sender ID, passage en force de Microsoft. Évalué à 4.
ouais, il lui faudra plus de zombies ... :/
[^] # Re: Pour faire quoi ?
Posté par gaaaaaAab . En réponse au message Editeur capable d'ouvrir des fichiers de plus 1,4G. Évalué à 2.
franchement, doit y avoir moyen de s'en sortir sans éditer le fichier
[^] # Re: sqlplus: set define off
Posté par gaaaaaAab . En réponse au message Oracle et les caractères spéciaux. Évalué à 2.
bon, une solution qui marche chez moi:
un bon coup de sed pour traiter les lignes vides et c'est fini ! :)