On Fri, Feb 21, 2003 at 10:01:06AM +0100, Pierre Maitre wrote:

> le code AWK en question:

[EMAIL PROTECTED]:~% awk -f /tmp/abcd
awk: /tmp/abcd: line 1: syntax error at or near while

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){}
nom = $12
prenom = $13
date_naissance = $14
rue = $15
NPA = $16
}

et je le lance comme:

   awk -f /tmp/abcd -v VARIABLE=truc

et `ça marche' (fichier non trouvé par *egrep*).

Je ne suis pas sûr que cela traite tout, mais probablement une partie
au moins.

En ce qui concerne *ton* code et pourquoi il a fonctionné et il ne
fonctionne plus, il faudrait comparer les versions de awk:

[EMAIL PROTECTED]:~% ls -la `which awk` `which nawk` `which mawk` `which gawk`
lrwxrwxrwx    1 root     root           21 Aug 26  2001 /usr/bin/awk -> 
/etc/alternatives/awk
-rwxr-xr-x    1 root     root       218232 Jan 17  2002 /usr/bin/gawk
-rwxr-xr-x    1 root     root        95004 Jul 18  2001 /usr/bin/mawk
lrwxrwxrwx    1 root     root           22 Aug 26  2001 /usr/bin/nawk -> 
/etc/alternatives/nawk

[EMAIL PROTECTED]:~% 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 Jul 26  2002 /etc/alternatives/awk -> 
/usr/bin/mawk
lrwxrwxrwx    1 root     root           13 Jul 26  2002 /etc/alternatives/nawk -> 
/usr/bin/mawk

Donc sur mon système, en ce moment, `awk' appelle `mawk', du package
mawk, au lieu de gawk, package gawk.  Il y a peut-être aussi des
différences dans les options par défaut (p.ex. compatibilité POSIX).

[EMAIL PROTECTED]:/tmp% date | awk -f /tmp/abcd
/bin/sh: fichier: command not found

[EMAIL PROTECTED]:/tmp% date | gawk -f /tmp/abcd
egrep: fichier: No such file or directory

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

choisir l'option listée avec gawk.

Pour information:

 Mawk is an interpreter for the AWK Programming Language. The AWK
 language is useful for manipulation of data files, text retrieval and
 processing, and for prototyping and experimenting with algorithms. Mawk
 is a new awk meaning it implements the AWK language as defined in Aho,
 Kernighan and Weinberger, The AWK Programming Language, Addison-Wesley
 Publishing, 1988. (Hereafter referred to as the AWK book.) Mawk conforms
 to the Posix 1003.2 (draft 11.3) definition of the AWK language
 which contains a few features not described in the AWK book, and mawk
 provides a small number of extensions.
 .
 Mawk is smaller and much faster than gawk. It has some compile-time
 limits such as NF = 32767 and sprintf buffer = 1020.

en bref Mawk est compatible POSIX, et peut-être que tu as utilisés
des extensions GNU.

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se désabonner aussi.

Répondre à