macos - Como usar o GNU sed no Mac OS 10.10+, 'brew install--default-names' não é mais suportado




bash homebrew (5)

$ brew instala o gnu-sed $ export PATH = "/ usr / local / opt / gnu-sed / libexec / gnubin: $ PATH"

Com esses dois comandos, o gnu-sed funciona corretamente

No Mac OS 10.10.3, instalei o gnu-sed digitando:

brew install gnu-sed --default-names

Quando digito novamente, recebo a mensagem:

gnu-sed-4.2.2 já instalado

No entanto, mesmo depois de reiniciar o sistema e reiniciar o Terminal, ainda não consigo usar a versão GNU do sed. Por exemplo:

echo a | sed s_A_X_i

retorna: sinalizador inválido no comando de substituição 'i'

O que devo fazer para que a versão GNU funcione? Aqui estão os caminhos na minha variável $ 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 

Sinto muito se minha pergunta parece óbvia, mas estou aprendendo scripts de shell por conta própria e ainda não entendo como os programas UNIX estão instalados. Qualquer ajuda para usar comandos compatíveis com GNU (neste caso, sed, mas em breve também precisarei de outros) no meu Mac sem causar danos ou confusão desnecessária seria muito apreciada.


Nota (2019):

A opção --with-default-names é removed desde janeiro de 2019, então agora essa opção não está mais disponível.

Ao instalar, o Homebrew instrui sobre como adaptar o caminho, se desejar usar o sed sem o prefixo g .

Você já possui o gnu-sed instalado sem a opção --with-default-names .

  • Com a opção --with-default-names ele instala o sed em /usr/local/bin/
  • Sem essa opção, ele instala o gsed

Então, no seu caso, o que você precisa fazer é:

$ brew uninstall gnu-sed
$ brew install gnu-sed --with-default-names

Atualizar caminho, se necessário ...

$ echo $PATH | grep -q '/usr/local/bin'; [ $? -ne 0 ] && export PATH=/usr/local/bin:$PATH
$ echo a | sed 's_A_X_i'

ou use gsed como outros sugeriram.


Quando você instala a versão GNU do sed para Mac OS X usando:

$ brew install gnu-sed

O programa que você usa é gsed .

Então, por exemplo:

$ 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

Além disso, para complementar o uso das ferramentas de comando GNU no Mac OS X, há um bom post aqui para obter as ferramentas do linux:

Instale e use as ferramentas de linha de comando GNU no Mac OS / OS X


Se você instalar o brew install coreutils , obterá o sed e várias outras versões do GNU, como tar, date, etc. Todas elas estão instaladas em / usr / local / bin e recebem o prefixo 'g'. Então, após a instalação, se você quiser a versão GNU do sed, digite gsed . Funciona bem.


--with-default-names não funcionou para mim no Mac OS X 10.14.2, por isso criei um link simbólico chamado sed para gsed mais alto no $PATH

Também criei um link simbólico chamado sed.1 para a gsed.1 manual gsed.1 mais alta no $MANPATH para que o man acesse a gsed manual gsed vez da página de manual padrão sed





gnu