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
다른 사람이 제안한대로 사용하십시오 .
다음을 사용하여 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>
일반 이름으로 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.
'Program Tip' 카테고리의 다른 글
AngularJS 지시문의 확인란 클릭에 응답하는 방법은 무엇입니까? (0) | 2020.10.09 |
---|---|
비어 있지 않은 속성에 대한 CSS 속성 선택기 (0) | 2020.10.09 |
두 문자열을 연결하여 완전한 경로를 만드는 방법 (0) | 2020.10.09 |
두 지점 사이의 거리 계산 (위도, 경도) (0) | 2020.10.09 |
오류 : " 'system.webServer / management / delegation'구성 섹션에 스키마가 없기 때문에 읽을 수 없습니다. (0) | 2020.10.09 |