source portable opencobol open compiler macos bash sed homebrew gnu

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 , instala sed 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