Program Tip

Mac OS 10.10 이상에서 GNU sed를 사용하는 방법, 'brew install --default-names'더 이상 지원되지 않음

programtip 2020. 10. 9. 12:19
반응형

Mac OS 10.10 이상에서 GNU sed를 사용하는 방법, 'brew install --default-names'더 이상 지원되지 않음


Mac OS 10.10.3에서 다음을 입력하여 gnu-sed를 설치했습니다.

brew install gnu-sed --default-names

다시 입력하면 다음과 같은 메시지가 나타납니다.

gnu-sed-4.2.2가 이미 설치됨

그러나 시스템을 재부팅하고 터미널을 다시 시작한 후에도 여전히 GNU 버전의 sed를 사용할 수 없습니다. 예를 들면 :

echo a | sed ’s_A_X_i’

반환 : 대체 명령 'i'의 잘못된 플래그

GNU 버전을 작동하려면 어떻게해야합니까? 내 $ 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 

내 질문이 당연해 보인다면 미안하지만 나는 스스로 쉘 스크립팅을 배우고 있으며 UNIX 프로그램이 어떻게 설치되는지 아직 이해하지 못한다. Mac에서 손상이나 불필요한 혼란을 일으키지 않고 GNU 호환 명령 (이 경우에는 sed이지만 곧 다른 명령도 필요함)을 사용하는 데 도움을 주시면 대단히 감사하겠습니다.


참고 (2019) :

--with-default-names옵션은 2019 년 1 월부터 제거 되었으므로 이제 더 이상 사용할 수 없습니다.

설치할 때 Homebrew는 g접두사 없이 sed를 사용하려는 경우 경로를 조정하는 방법을 지시 합니다.


--with-default-names옵션 없이 이미 gnu-sed가 설치되어 있습니다.

  • 함께 --with-default-names옵션은 설치 sed/usr/local/bin/
  • 해당 옵션이 없으면 설치 gsed

따라서 귀하의 경우에해야 할 일은 다음과 같습니다.

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

필요한 경우 경로 업데이트 ...

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

또는 gsed다른 사람이 제안한대로 사용하십시오 .


다음을 사용하여 sedMac OS X 용 GNU 버전을 설치할 때 :

$ brew install gnu-sed

사용하는 프로그램은 gsed입니다.

예를 들면 다음과 같습니다.

$ 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

또한 Mac OS X에서 GNU 명령 도구의 사용을 칭찬하기 위해 여기에 Linux에서 도구를 가져 오는 멋진 블로그 게시물이 있습니다.

Mac OS / OS X에서 GNU 명령 줄 도구 설치 및 사용


sedOS X와 그 선박에 있습니다 /usr/bin.

sedhomebrew설치가에있다 /usr/local/bin.

homebrew하나 를 사용하려면 두 가지 옵션이 있습니다.

옵션 1

사용할 때마다 다음을 homebrew sed입력하십시오.

/usr/local/bin/sed

또는 바람직하게

옵션 2

다음 과 같이 로그인 프로필의 PATH에서 /usr/local/bin/앞으로 이동 /usr/bin하십시오.

 export PATH=/usr/local/bin:<other places>

일반 이름으로 gnu-sed 명령을 사용해야하는 경우 bashrc에서 PATH에 "gnubin"디렉토리를 추가 할 수 있습니다. bash 또는 터미널에서 다음 명령을 사용하십시오.

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

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

이 두 명령을 사용하면 gnu-sed가 제대로 작동합니다.


--with-default-names didn't work for me on Mac OS X 10.14.2 so I created a symlink named sed to gsed higher in the $PATH

I also created a symlink named sed.1 to the gsed.1 manpage higher in the $MANPATH so man would access the gsed manpage instead of the default sed manpage


If you install brew install coreutils, you'll get sed and a bunch of other GNU versions of things, like tar, date, etc. These are all installed in /usr/local/bin and given the prefix 'g'. So after installing, if you want the GNU version of sed, you'd type gsed instead. Works great.

참고URL : https://stackoverflow.com/questions/30003570/how-to-use-gnu-sed-on-mac-os-10-10-brew-install-default-names-no-longer-su

반응형