.bash_profile sed: \1 ne sont pas définis dans le RE
J'ai configurer un local environnement de développement web sur mes OS X 10.9 et installé Homebrew. Prochaine étape dans mon guide me dit d'ajouter de la logique à mon ~/.bash_profile
avec la commande suivante:
echo "export PATH=$(echo $PATH | sed 's|/usr/local/bin||; s|/usr/local/sbin||; s|::|:|; s|^:||; s|(.*)|/usr/local/bin:/usr/local/sbin:|')" >> ~/.bash_profile && source ~/.bash_profile
Quand je rentre dans le terminal, j'obtiens:
sed: 1: "s|/usr/local/bin||; s|/...": not defined in the RE
Est-il export PATH=/usr/local/bin:/usr/local/sbin:$PATH
qui doit être écrite à mon .bash_profile
? Et pourquoi j'obtiens cette erreur?
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
\(.*\)
au lieu de(.*)
.sed
utilise Basic Regular Expressions (REP) par défaut, qui utilise\(
et\)
pour le groupe de la capture, et pas seulement(
et)
utilisés dans les Expressions Régulières Étendues (ERE). Depuis votre expression utilisée(.*)
au lieu de\(.*\)
, il n'est pas reconnu comme un groupe de capture, et donc rien n'est capturé pour une utilisation avec\1
.Certains
sed
implémentations, comme ceux fournis par GNU et BSD, ont une extension de la spécification de l'utilisation de l'ERE, mais il est n'est pas spécifiée par POSIX, et vous ne pouvez pas l'utiliser si vous voulez être portable.-E
pour activer le support de étendu expressions régulières, où(
et)
n'est pas (ne doit pas) être échappé - fonctionne sur OS X (qui l'OP est sur) et GNU/Linux (où l'alias-r
est documentée, cependant).\(.*\)
ne me donne pas une erreur. Mais maintenant, le toutecho
est écrit dans mon.bash_profile
0_0/usr/local/bin:/usr/local/sbin
apparaît au début. Concrètement, il prend toutes les références à ces deux répertoires déjà dans le CHEMIN, et puis les remplace à l'avant.(.*)
mais la Base d'Expressions Régulières sait vos luttes et les acclamations vous sur\(.*\)