web-dev-qa-db-fra.com

\ D n'est-il pas pris en charge par les expressions de base de grep?

Cela ne génère aucune sortie. Comment venir?

$ echo 'this 1 2 3' | grep '\d\+'

Mais ceux-ci le font:

$ echo 'this 1 2 3' | grep '\s\+'
this 1 2 3

$ echo 'this 1 2 3' | grep '\w\+'
this 1 2 3
101
abc

grep est le mode par défaut (iirc) POSIX regex et \d est pcre. Vous pouvez soit passer -P à gnu grep, pour les expressions rationnelles de type Perl, ou utilisez [[:digit:]] au lieu de \d.

daenyth@Bragi ~ $ echo 1 | grep -P '\d'
1
daenyth@Bragi ~ $ echo 1 | grep '[[:digit:]]'
1
168
Daenyth

Essaye ça $ echo 'this 1 2 3' | grep '[0-9]\+'

17
Charles Ma