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 osed
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