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


95

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이지만 곧 다른 명령도 필요함)을 사용하는 데 도움을 주시면 대단히 감사하겠습니다.


2
brewGNU를 어디에 설치 sed했습니까? 그 디렉토리가 귀하의 PATH? 입력하면 무엇을 얻 sed --version습니까? (BSD sed는 불평 할 것입니다. GNU sed는 버전 정보를보고 할 것입니다.) brewPATH에 디렉토리가 /usr/bin있거나 GNU에 대한 절대 경로 이름을 사용하는 방법을 배우기 전까지는 GNU를 sed실행하지 않을 것 sed입니다. 따옴표에도주의하십시오. 와는 달리 워드 프로세서 인용문 '입니다.
Jonathan Leffler

답변:


112

참고 (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다른 사람이 제안한대로 사용하십시오 .


8
--with-default-names 옵션은 더 이상 지원되지 않습니다
Amol

49

다음을 사용하여 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 명령 줄 도구 설치 및 사용


19

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>

16

$ brew install gnu-sed

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

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


이것은 현재 터미널 세션에서만 작동한다는 것을 기억하십시오
maheshmnj

8

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

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

2

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

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


4
예를 들어 별칭을 수행 할 수도 있습니다 alias sed=gsed.
kenorb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.