Aucun de ceux-ci ne fonctionne pour moi (Solaris).
spraff
Moi non plus. (Cygwin) Vouliez-vous avoir \+? Qu'est-ce que ça veut dire?
Eric Wilson
oui, je suis sur Ubuntu 10.04, en utilisant bash. Pour BRE en grep, vous devez échapper certains caractères. Essayez "Basic vs Extended Regular Expressions" dans man grep.
Ankur Agarwal
2
@FarmBoy: +dans un regex signifie "un ou plusieurs des jetons précédents". Dans ce cas, il est échappé car c'est la syntaxe requise par greple moteur d'expression régulière par défaut de.
Daenyth
2
@FarmBoy: +doit être échappé si vous utilisez grep; si vous utilisez egrep, ce n'est pas le cas. grep -Eéquivaut à egrep(au moins pour la version GNU).
Keith Thompson
Réponses:
196
grepLe mode par défaut de (iirc) POSIX regex et \dpcre. Vous pouvez passer -Pà gnu grep, pour les expressions rationnelles de type Perl, ou utiliser à la [[:digit:]]place de \d.
Le mode -E de BSD grep inclut \ d. Mais pas le mode -E de GNU grep. C'est tellement flagrant que je suis choqué de le découvrir maintenant.
Keith Tyler
> Le mode -E de BSD grep inclut \ d. Mais pas le mode -E de GNU grep. C'est tellement flagrant que je suis choqué de le découvrir maintenant. Cela m'a juste mordu sur un script de validation de message git commit. J'ai été très surpris que \ d soit le coupable.
\+
? Qu'est-ce que ça veut dire?+
dans un regex signifie "un ou plusieurs des jetons précédents". Dans ce cas, il est échappé car c'est la syntaxe requise pargrep
le moteur d'expression régulière par défaut de.+
doit être échappé si vous utilisezgrep
; si vous utilisezegrep
, ce n'est pas le cas.grep -E
équivaut àegrep
(au moins pour la version GNU).Réponses:
grep
Le mode par défaut de (iirc) POSIX regex et\d
pcre. Vous pouvez passer-P
à gnu grep, pour les expressions rationnelles de type Perl, ou utiliser à la[[:digit:]]
place de\d
.la source
Essaye ça
$ echo 'this 1 2 3' | grep '[0-9]\+'
la source