Comment voulez-vous rechercher des chaînes alphanumériques de 1 à 50 caractères (idéalement, n'importe quelle longueur fonctionnerait aussi) avec deux points de chaque côté - un résultat typique serait toutes les lignes contenant la chaîne :shopping:
. Jusqu'à présent, j'ai le code ci-dessous (j'ai essayé quelques variantes) qui ne fonctionne pas:
grep ':[[:alnum:]]{1,100}:' ~/x.txt
grep
en incluant le-E
commutateur.Réponses:
Vous devez activer les expressions régulières étendues pour cela:
la source
Avec les expressions régulières de base, vous pouvez l'écrire comme:
Notez que
\{
(par opposition à\+
ou\?
par exemple) est standard et portable, et en fait les équivalents BRE de+
et?
sont généralement écrits avec\{
:\{1,\}
et\{0,1\}
.grep -E
est également standard et portable, vous pouvez donc aussi bien l'utiliser car il rend les expressions rationnelles plus lisibles dans ces cas.la source
Vous utilisez une expression régulière étendue, vous devez donc utiliser l'option -E:
la source
Puisque personne d'autre ne l'a mentionné, vous pouvez également utiliser
egrep
ce qui, si je comprends bien, est équivalent àgrep -E
.la source
egrep
était la commande historique de grep avec les ERE. Les fonctionnalités de grep et egrep ont depuis (depuis longtemps) été fusionnées dans grep avec l'option -E.egrep
est désormais considéré comme obsolète / obsolète (mais il est peu probable qu'il y aille car certaines personnes y sont encore habituées).