Pourquoi cette commande sed pour faire correspondre le numéro de pas de travail?
Ma commande est comme ceci:
echo "12 cats" | sed 's/[0-9]+/Number/g'
(Je suis en utilisant le sed
à la vanille Mac)
J'attends le résultat:
Number cats
Cependant, le résultat réel est:
12 cats
Quelqu'un aurait-il des idées à ce sujet? Merci!
- Pour linux, vous pouvez utiliser le
-r
option de sed, pour Mac, vous pouvez utiliser-E
... qui travaille aussi sur certains des variations de Linux comme la compatibilité cale
Vous devez vous connecter pour publier un commentaire.
L'expansion de la
+
modificateur fonctionne pour moi:Aussi, le
-E
commutateur faire la+
modificateur de travail, voir choroba de réponse.+
par défaut..+
doit être backslashed pour obtenir sa signification spéciale.+
modificateur. Le-E
commutateur active sur les expressions régulières étendues où+
fonctionne sans échappement.)Utiliser perl, cela fonctionne sur unix ou linux.
Très d'une manière mystique qui n'est pas expliqué (au moins dans les ressources que j'ai jusqu'à présent..),
Vous devriez vérifier le prochain mandat:
d'expansion (dans le contexte de bash),
regex,
étendue regex
Pour votre question, il semble que l'expr' vous avez donné à sed est une expression régulière ou prolongée de la regex....donc, par un tutoriel, j'ai lu que vous devez insérer également l'-r avant votre commande sed...
echo "12 chats" | sed -r 's/[0-9]+/Nombre de/g'
Fonctionne pour moi dans une Ubuntu 16.04 , bash.