# Grep 2.10 et 2.12, différence

**URL:** <https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682 "2016-02-21T13:10:48Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/1 "2016-02-21T13:10:49Z")

</div>

Bonjour à tous

/tmp/fichier contient un seul caractère nul.

Avec grep 2.10:

$ if (cat /tmp/fichier | grep -q -E “^[0-9]\*$”) ; then echo Yop ; fi  
$

Avec grep 2.12:  
$ if (cat /tmp/fichier | grep -q -E “^[0-9]\*$”) ; then echo Yop ; fi  
Yop  
$

Est ce voulu ou bien est un bug et il faut faire un rapport à votre avis?

---

<div class="post-metadata">

**Author:** ![Niloo](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/n/c37758/32.png) [@Niloo](https://www.debian-fr.org/u/Niloo)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/2 "2016-02-21T13:10:49Z")

</div>

As-tu comparé l’affichage de sortie et le code de sortie de cette commande avec ces versions de grep ?

En gros, pour chaque version, que te retourne :

```auto

```

et (à effectuer juste après sans autre commande entre les deux)

```auto

```

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/3 "2016-02-21T13:10:49Z")

</div>

[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](http://fossies.org/unix/misc/grep-2.14.tar.gz:a/grep-2.14/NEWS)

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/4 "2016-02-21T13:10:50Z")

</div>

Salut,

Avec grep 2.12

[quote]gerard@glu:/tmp$ if ( cat /tmp/fichier | grep -q -E “^[0-9]\*$”) ; then echo Yop ; fi  
gerard@glu:/tmp$  
[/quote]

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/5 "2016-02-21T13:10:50Z")

</div>

Oui, c’est cohérent:

`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…

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/6 "2016-02-21T13:10:50Z")

</div>

Pour être précis:

`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
`

`
boisson@debian:/tmp$ grep -E "^[0-9]*$" /tmp/fichier
boisson@debian:/tmp$ dpkg -l | grep grep
ii grep 2.10-1 amd64 GNU grep, egrep and fgrep
boisson@debian:/tmp$ `

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/7 "2016-02-21T13:10:50Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/8 "2016-02-21T13:10:50Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Mimoza](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mimoza/32/3858_2.png) [@Mimoza](https://www.debian-fr.org/u/Mimoza)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/9 "2016-02-21T13:10:52Z")

</div>

Demande plus d’info sur le Mailing liste, non ?

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/10 "2016-02-21T13:10:55Z")

</div>

[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.

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/11 "2016-02-21T13:10:55Z")

</div>

Ah oui merde. Au temps pour moi. C’est embêtant ça d’avoir le raisonnement juste mais d’en tirer la mauvaise conclusion. 😊

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 21, 2016, 1:10 UTC](https://www.debian-fr.org/t/grep-2-10-et-2-12-difference/54682/12 "2016-02-21T13:10:55Z")

</div>

C’est à cause de ça:

`totoche:/home/francois/Clef/V1# /bin/true
totoche:/home/francois/Clef/V1# echo $?
0
totoche:/home/francois/Clef/V1# /bin/false
totoche:/home/francois/Clef/V1# echo $?
1
totoche:/home/francois/Clef/V1# 
`Ça nuit à l’intuition…
