[quote=“fran.b”]/tmp/fichier contient un seul caractère nul.
[…]
Est ce voulu ou bien est un bug et il faut faire un rapport à votre avis?[/quote]
Je n’ai rien vu qui puisse avoir un rapport avec ça dans le changelog : fossies.org/unix/misc/grep-2.14. … -2.14/NEWS
boisson@debian:/tmp$ if (cat /tmp/fichier | grep -q -E "^[0-9 ]*$") ; then echo Yop ; fi
Yop
boisson@debian:/tmp$ ./test.sh
0
Yop
boisson@debian:/tmp$ su
root@debian:/tmp# dpkg -i /home/boisson/Téléchargements/grep_2.10-1_amd64.deb
dpkg : avertissement : dégradation (« downgrade ») de grep depuis 2.12-2 vers 2.10-1
(Lecture de la base de données... 180313 fichiers et répertoires déjà installés.)
Préparation du remplacement de grep 2.12-2 (en utilisant .../grep_2.10-1_amd64.deb) ...
Dépaquetage de la mise à jour de grep ...
Paramétrage de grep (2.10-1) ...
Traitement des actions différées (« triggers ») pour « install-info »...
Traitement des actions différées (« triggers ») pour « man-db »...
root@debian:/tmp# exit
boisson@debian:/tmp$ ./test.sh
1
boisson@debian:/tmp$ cat test.sh
#!/bin/sh
cat /tmp/fichier | grep -q -E "^[0-9 ]*$"
echo $?
if (cat /tmp/fichier | grep -q -E "^[0-9 ]*$") ; then echo Yop ; fi
boisson@debian:/tmp$
Je précise que j’ai fait le test sur 3 machines amd64 wheezy à jour. L’une (celle ci dessus) installée d’hier…
Cela dit, le résultat de grep 2.12 me paraît tout à fait correct : ton motif correspond soit à des lignes vides, soit à des lignes composées uniquement de chiffres.
Étant donné que ton fichier contient seulement un caractère nul, la seule et unique ligne du fichier ne correspond pas au motif.
À moins que j’aie loupé quelque chose le bug est dans grep 2.10 pas dans le 2.12.
Remarquez, je viens de noter que c’est en fait la version 2.12 qui est cohérente mais il est ennuyeux qu’une modification comme celle là ne soit pas dans les changelog (j’avais vérifié)…
edit: même reflexe que toi… mais c’est le fait que le changement ne soit pas signaler qui m’énerve, j’ai un script qui a planté à cause de cela et ça m’a pris longtemps à débugguer
[quote=“syam”]Cela dit, le résultat de grep 2.12 me paraît tout à fait correct : ton motif correspond soit à des lignes vides, soit à des lignes composées uniquement de chiffres.
Étant donné que ton fichier contient seulement un caractère nul, la seule et unique ligne du fichier ne correspond pas au motif.
À moins que j’aie loupé quelque chose le bug est dans grep 2.10 pas dans le 2.12.[/quote]
Ben non, justement, regardant une deuxième fois,
boisson@debian:/tmp$ grep -E "^[0-9 ]*$" /tmp/fichier
Fichier binaire /tmp/fichier concordant
boisson@debian:/tmp$dpkg -l | grep grep
ii grep 2.12-2 amd64 GNU grep, egrep and fgrep
Le fichier est non nul et contient une ligne composée de \0, donc ça ne devrait pas correspondre… C’est le 2.10 qui fonctionne. la ligne n’est pas vide, elle contient des caractères nuls. Par ailleurs grep le considère bien comme un fichier binaire. La réponse du 2.12 est incohérente.