[macos] 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>


답변

$ brew install gnu-sed

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

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


답변

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

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


답변

--with-default-names맥 OS X 10.14.2에 나를 위해 작동하지 않았다 나는라는 이름의 심볼릭 링크 생성되도록 sedgsed에 이상$PATH

I는 또한라는 이름의 심볼릭 링크 생성 sed.1받는 gsed.1에서 맨 페이지 이상을 $MANPATH너무 man액세스 할 gsed기본 대신 맨 페이지를 sed


답변