grep avec des regexp: les espaces blancs ne correspond pas à moins que j'ai ajouter une assertion

GNU grep 2.5.4 sur le coup 4.1.5(1) sur Ubuntu 10.04

Cela correspond

$ echo "this is a     line" | grep 'a[[:space:]]\+line'
this is a     line

Mais ce n'est pas

$ echo "this is a     line" | grep 'a\s\+line'

Mais cela correspond aussi

$ echo "this is a     line" | grep 'a\s\+\bline'
this is a     line

Je ne comprends pas pourquoi #2 ne correspond pas (alors que # 1) et n ° 3 montre également un match. Quelle est la différence ici?

  • il fonctionne pour moi avec GNU grep 2.8 $ echo "ceci est une ligne" | grep 'a\s\+en ligne' ; echo $? c'est une ligne de 0
  • 2 et 3 ne fonctionnent pas pour moi (GNU grep 2.5.1)
  • Tous les trois travaillent pour moi: Cygwin avec GNU grep 2.6.3
  • Je suis plus intéressé à savoir pourquoi #2 ne correspondent pas, mais #3 ne. Un zéro supplémentaire de la largeur de l'affirmation (limite de mot) fait une telle différence ?
  • À cause de bugs dans grep 2.5 Regardez ici: [Grep espace blanc, comportement][1] [1]: stackoverflow.com/questions/4233159/...
InformationsquelleAutor abc | 2011-08-10