Comment utiliser GNU sed sur Mac OS 10.10+, 'brew install --default-noms" n'est plus pris en charge
Sous Mac OS x 10.10.3, j'ai installé gnu sed en tapant:
brew install gnu-sed --default-names
Lorsque je tape à nouveau, je reçois le message:
gnu sed-4.2.2 déjà installé
Cependant, même après le redémarrage du système et redémarrer le Terminal, je ne peux toujours pas utiliser la version GNU de la sed. Par exemple:
echo a | sed ’s_A_X_i’
retourne:
mauvais indicateur de substitution de commande "i"
Que dois-je faire pour obtenir la version GNU de travail?
Voici les chemins d'accès dans ma variable $PATH.
/Users/WN/-myUnix
/opt/local/bin
/opt/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/Applications/calibre.app/Contents/MacOS
/opt/ImageMagick/bin
/usr/texbin
Je suis désolé si ma question semble évidente, mais je suis à l'apprentissage de la création de scripts shell sur mon propre et vous ne comprenez pas bien encore comment UNIX programmes sont installés. Toute aide à l'utilisation de GNU conformes à la commande (dans ce cas, sed, mais bientôt je vais avoir besoin d'autres) sur mon Mac, sans causer de dommages ou inutiles, ce serait grandement apprécié.
- Où avez -
brew
installer GNUsed
? Est ce répertoire sur votrePATH
? Qu'obtenez-vous si vous tapezsed --version
? (BSDsed
va se plaindre; GNUsed
rapport de ses informations de version.) Jusqu'à ce que vous avez l'brew
répertoire sur votre CHEMIN à l'avance de/usr/bin
ou vous apprendre à utiliser le chemin absolu vers GNUsed
, vous ne serez pas en cours d'exécution GNUsed
. Soyez prudent avec les guillemets, trop.’
est un traitement de texte, citation, contrairement à'
.
Vous devez vous connecter pour publier un commentaire.
Note (2019):
La
--with-default-names
option est supprimé depuis janvier 2019, alors maintenant que l'option n'est plus disponible.Lors de l'installation, Homebrew instruit sur la manière d'adapter le chemin, si l'on veut utiliser sed sans
g
préfixe.Vous avez déjà la gnu sed installé sans l'
--with-default-names
option.--with-default-names
option, il installesed
à/usr/local/bin/
gsed
Si dans votre cas, ce que tu dois faire c'est:
Chemin de mise à jour si nécessaire...
ou de l'utilisation
gsed
comme d'autres l'ont suggéré.Lorsque vous installez la version GNU de
sed
pour Mac OS X à l'aide de:Le programme que vous utilisez est
gsed
.Ainsi, par exemple:
Aussi, pour compléter l'utilisation de GNU outils de commande sous Mac OS X, il y a un joli blog post ici pour obtenir les outils de linux:
Installer et utiliser GNU outils en ligne de commande sous Mac OS/OS X
La
sed
qui est fourni avec OS X est dans/usr/bin
.La
sed
quehomebrew
installe est en/usr/local/bin
.Si vous préférez utiliser le
homebrew
, vous avez deux options:Option 1
Chaque fois que vous souhaitez utiliser
homebrew
sed
, typeou, de préférence
Option 2
Déplacer
/usr/local/bin/
à l'avance (avant)/usr/bin
dans votre CHEMIN d'accès à votre profil de connexion, à l'instar de ceSi vous avez besoin d'utiliser gnu sed commande normale avec leurs noms, vous
ajouter un "gnubin" répertoire de votre CHEMIN à partir de votre bashrc. Utilisez simplement la commande suivante dans votre bash ou d'un terminal.
--with-default-names
n'a pas fonctionné pour moi sur Mac OS X 10.14.2 j'ai donc créé un lien symbolique nommésed
àgsed
plus élevé dans le$PATH
J'ai également créé un lien symbolique nommé
sed.1
à lagsed.1
man plus élevé dans le$MANPATH
doncman
accès auxgsed
page de manuel au lieu de la valeur par défautsed
page de manuelalias sed=gsed
.$ brew installer gnu sed
$ export PATH="/usr/local/opt/gnu sed/libexec/gnubin:$PATH"
Avec ces deux commandes gnu sed fonctionne correctement
Si vous installez
brew install coreutils
, vous aurez sed et un tas d'autres versions GNU de choses, comme le goudron, la date, etc. Ces composants sont installés dans /usr/local/bin et donné le préfixe "g". Ainsi, après l'installation, si vous voulez la version GNU de sed, vous feriez typegsed
à la place. Fonctionne très bien.find / -name gsed
tourne rien sur mon Yosemite système aprèsbrew install coreutils
.brew install gnu-sed
. D'autres viennent ici peut faire référence à ce lien