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
다른 사람이 제안한대로 사용하십시오 .
답변
다음을 사용하여 sed
Mac 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 명령 줄 도구 설치 및 사용
답변
sed
OS X와 그 선박에 있습니다 /usr/bin
.
sed
그 homebrew
설치가에있다 /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에 나를 위해 작동하지 않았다 나는라는 이름의 심볼릭 링크 생성되도록 sed
에 gsed
에 이상$PATH
I는 또한라는 이름의 심볼릭 링크 생성 sed.1
받는 gsed.1
에서 맨 페이지 이상을 $MANPATH
너무 man
액세스 할 gsed
기본 대신 맨 페이지를 sed
맨