macos - portable - gnu cobol compiler
Cómo usar GNU sed en Mac OS 10.10+, ''brew install--default-names'' ya no es compatible (7)
En Mac OS 10.10.3, instalé gnu-sed escribiendo:
brew install gnu-sed --default-names
Cuando lo escribo de nuevo, recibo el mensaje:
gnu-sed-4.2.2 ya instalado
Sin embargo, incluso después de reiniciar el sistema y reiniciar Terminal, todavía no puedo usar la versión GNU de sed. Por ejemplo:
echo a | sed ’s_A_X_i’
devuelve: indicador incorrecto en el comando de sustitución ''i''
¿Qué debo hacer para que funcione la versión de GNU? Aquí están las rutas en mi 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
Lo siento si mi pregunta parece obvia, pero estoy aprendiendo scripts de shell por mi cuenta y todavía no entiendo cómo están instalados los programas UNIX. Cualquier ayuda para usar comandos compatibles con GNU (en este caso sed, pero pronto necesitaré otros también) en mi Mac sin causar daños o desorden innecesario sería muy apreciada.
$ brew install gnu-sed $ export PATH = "/ usr / local / opt / gnu-sed / libexec / gnubin: $ PATH"
Con estos dos comandos, gnu-sed funciona correctamente
Cuando instala la versión GNU de
sed
para Mac OS X usando:
$ brew install gnu-sed
El programa que usas es
gsed
.
Así por ejemplo:
$ 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
Además, para complementar el uso de las herramientas de comando GNU en Mac OS X, hay una buena publicación de blog aquí para obtener las herramientas de Linux:
Instalar y usar herramientas de línea de comando GNU en Mac OS / OS X
El
sed
que se envía con OS X está en
/usr/bin
.
El
sed
que instala
homebrew
está en
/usr/local/bin
.
Si prefiere usar el
homebrew
, tiene dos opciones:
Opción 1
Cada vez que quiera usar
sed
homebrew
, escriba
/usr/local/bin/sed
o, preferiblemente
opcion 2
Mueva
/usr/local/bin/
ahead (es decir, antes)
/usr/bin
en su RUTA en su perfil de inicio de sesión, así
export PATH=/usr/local/bin:<other places>
Nota (2019):
La opción
--with-default-names
se
removed
desde enero de 2019, por lo que ahora esa opción ya no está disponible.
Al instalar, Homebrew instruye sobre cómo adaptar la ruta, si se quiere usar sed sin el prefijo
g
.
Ya tiene instalado gnu-sed sin la opción
--with-default-names
.
-
Con la opción
--with-default-names
, instalased
en/usr/local/bin/
-
Sin esa opción, instala
gsed
Entonces, en su caso, lo que debe hacer es:
$ brew uninstall gnu-sed
$ brew install gnu-sed --with-default-names
Actualizar ruta si es necesario ...
$ echo $PATH | grep -q ''/usr/local/bin''; [ $? -ne 0 ] && export PATH=/usr/local/bin:$PATH
$ echo a | sed ''s_A_X_i''
o use
gsed
como otros sugirieron.
Si instala
brew install coreutils
, obtendrá sed y un montón de otras versiones de GNU de cosas, como tar, date, etc. Todos estos se instalan en / usr / local / bin y reciben el prefijo ''g''.
Entonces, después de la instalación, si desea la versión GNU de sed, escriba
gsed
en
gsed
lugar.
Funciona genial.
Si necesita usar el comando gnu-sed con sus nombres normales, puede agregar un directorio "gnubin" a su RUTA desde su bashrc. Simplemente use el siguiente comando en su bash o terminal.
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
--with-default-names
no funcionó para mí en Mac OS X 10.14.2, así que creé un enlace simbólico llamado
sed
a
gsed
más alto en
$PATH
También creé un enlace simbólico llamado
sed.1
a la
gsed.1
sed.1
de
gsed.1
más arriba en
$MANPATH
para que
man
acceda a la página de
gsed
lugar de la página de
gsed
de
sed
predeterminada