> J'ai aussi eu des problemes avec awk y'a pas longtemps... Regarde quel est
> le programme appelé par la commande awk (gawk, mawk, nawk, awk?).
Eh oui, c'était ça: mon programme marchait avec gawk, et c'est mawk qui était appelé par la commande awk.
Merci pour le tuyau
Marc SCHAEFER wrote:
Est-ce qu'il faut que le while se trouve dans un bloc ? Effectivement, je complète le script:
truc = "egrep -e '^" VARIABLE "' fichier"; while(system(truc) != 0){}
Effectivement, c'est une syntaxe plus élégante, qui fonctionne à la fois pour gawk et mawk.
J'adopte.
Donc apparemment, les systèmes que tu as utilisés récemment utilisaient la version GNU de awk, et non pas `mawk'.
Pour changer pour le système entier, de façon à ce que awk soit toujours gawk:
update-alternatives --config awk
Voila, c'est fait: station0:/etc/apt# ls -la /etc/alternatives/{awk,nawk,mawk,gawk} ls: /etc/alternatives/mawk: No such file or directory ls: /etc/alternatives/gawk: No such file or directory lrwxrwxrwx 1 root root 13 Feb 23 16:41 /etc/alternatives/awk -> /usr/bin/gawk lrwxrwxrwx 1 root root 13 Feb 23 16:41 /etc/alternatives/nawk -> /usr/bin/gawk
En bref, et pour finir ce feedback, mon programme awk fonctionne un peu comme une base de donnée indexée: j'ai un premier fichier ascii qui est traité ligne par ligne par le programme awk, et chaque ligne comporte un champ "code-client"". Ma ligne
while ("egrep -e '^'"code-client" fichier2" | getline ) {}
va chercher dans fichier2 l'adresse correspondant au code-client.
J'aurais pu, plus simplement, coder ainsi:
while (getline < "patients" > 0) {
mais fichier2 fait plus de 15 Mb, et la solution avec egrep permet une reponse nettement plus rapide.
Un grand merci à tous pour votre aide et pour les explications détaillées
Pierre Maitre
-- Dr Pierre-O. Maitre Privat Docent FMH Anesthésiologie FMH Pharmacologie Clinique Cabinet médical / A la Joy CH-1273 Genolier Switzerland
-- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.