Sous Mac OS 10.10.3, j'ai installé gnu-sed en tapant:
brew install gnu-sed --default-names
Quand je tape à nouveau, je reçois le message:
gnu-sed-4.2.2 déjà installé
Cependant, même après avoir redémarré le système et redémarré Terminal, je ne peux toujours pas utiliser la version GNU de sed. Par exemple:
echo a | sed ’s_A_X_i’
renvoie: bad flag dans la commande de substitution 'i'
Que dois-je faire pour que la version GNU fonctionne? Voici les chemins 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 j'apprends tout seul les scripts Shell et je ne comprends pas très bien comment les programmes UNIX sont installés. Toute aide pour utiliser les commandes conformes à GNU (dans ce cas sed, mais bientôt, j'en aurai aussi besoin) sur mon Mac sans causer de dégâts ni d'encombrer inutilement serait grandement appréciée.
Note (2019):
L'option --with-default-names
est supprimée depuis janvier 2019, cette option n'est donc plus disponible.
Lors de l'installation, Homebrew explique comment adapter le chemin, si l'on veut utiliser sed sans le préfixe g
.
Vous avez déjà installé gnu-sed sans l'option --with-default-names
.
--with-default-names
, il installe sed
sur /usr/local/bin/
gsed
Donc, dans votre cas, ce que vous devez faire est:
$ brew uninstall gnu-sed
$ brew install gnu-sed --with-default-names
Mettre à jour le chemin si nécessaire ...
$ echo $PATH | grep -q '/usr/local/bin'; [ $? -ne 0 ] && export PATH=/usr/local/bin:$PATH
$ echo a | sed 's_A_X_i'
ou utilisez gsed
comme suggéré.
Lorsque vous installez la version GNU de sed
pour Mac OS X à l'aide de:
$ brew install gnu-sed
Le programme que vous utilisez est gsed
.
Donc par exemple:
$ echo "Calimero is a little chicken" > test
$ cat test
Calimero is a little chicken
$ gsed -i "s/little/big/g" test
$ cat test
Calimero is a big chicken
En outre, pour compléter l’utilisation des outils de commande GNU sur Mac OS X, il existe un article sur le blog de Nice qui contient les outils de linux:
Installer et utiliser les outils de ligne de commande GNU sous Mac OS/OS X
La sed
fournie avec OS X est dans /usr/bin
.
La sed
que homebrew
installe est dans /usr/local/bin
.
Si vous préférez utiliser la variable homebrew
, vous avez deux options:
Option 1
A chaque fois que vous souhaitez utiliser homebrew
sed
, tapez
/usr/local/bin/sed
ou de préférence
Option 2
Déplacez /usr/local/bin/
devant (c'est-à-dire avant) /usr/bin
dans votre CHEMIN dans votre profil de connexion, comme ceci
export PATH=/usr/local/bin:<other places>
Si vous devez utiliser la commande gnu-sed avec leurs noms normaux, vous pouvez ajouter un répertoire "gnubin" à votre PATH à partir de votre bashrc. Utilisez simplement la commande suivante dans votre bash ou votre terminal.
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
$ brew installe gnu-sed $ export PATH = "/ usr/local/opt/gnu-sed/libexec/gnubin: $ PATH"
Avec ces deux commandes, gnu-sed fonctionne correctement
--with-default-names
ne fonctionnait pas pour moi sous 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
vers la page de manuel gsed.1
située plus haut dans le $MANPATH
afin que man
puisse accéder à la gsed
au lieu de la valeur par défaut sed
.