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
프레픽스
gnu-sed는 설치되어 있지 않습니다.--with-default-names
★★★★★★ 。
- ★★★★★★★★★★★★★★★★
--with-default-names
설치 대상 옵션/usr/local/bin/
- 이 옵션을 사용하지 않으면 설치됩니다.
그래서 당신의 경우 당신이 해야 할 일은 다음과 같습니다.
$ 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'
다른 사람의 제안대로 사용할 수도 있습니다.
의 「GNU」를 인스톨 .sed
Mac OS X:
$ brew install gnu-sed
사용하는 프로그램은 입니다.
예를 들어 다음과 같습니다.
$ 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 명령줄 도구 설치 및 사용
$ brew install gnu-sed
$ export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
이 2개의 명령어를 사용하면 gnu-sed는 정상적으로 동작합니다.
sed
되어 있는 것은 OS X에 탑재되어 ./usr/bin
sed
그그homebrew
은, 「인스톨」에 있습니다./usr/local/bin
.
「 」를 는, 「 」를 합니다.homebrew
이렇게 두 가 있어요. 즉, 기껏해야 기껏해야 기껏해야 기껏해야 기껏해야 기껏해야 기껏해야 기껏해야 기껏해야 기껏해야 기껏해야 기껏해야 기껏하다.
옵션 1
하고 homebrew
sed
, 삭제
/usr/local/bin/sed
또는 가급적
옵션 2
★★/usr/local/bin/
)/usr/bin
로그인 의 PATH에 되어 있습니다.
export PATH=/usr/local/bin:<other places>
gnu-sed 명령어를 통상의 이름으로 사용할 필요가 있는 경우는, bashrc 로부터 PATH 에 「gnubin」디렉토리를 추가할 수 있습니다.bash 또는 단말기에서 다음 명령을 사용합니다.
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
--with-default-names
X 하지 않았기 에 Mac OS X 10.14라는 .2에서는 작동하지 않았기 때문에 다음과 같은 심볼링크를 만들었습니다.sed
로.gsed
더 높은 곳에$PATH
또한 다음과 같은 이름의 심볼링크를 만들었습니다.sed.1
에게gsed.1
더 높은 곳에 있는 맨페이지$MANPATH
그렇게man
에 액세스 합니다.gsed
기본값이 아닌 manpagesed
맨 페이지
이 내보내기 PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
는, GONE(Mojave)를 재기동하면, 단말 SESSIOn 마다만 유효합니다.
그 이후로는--with-default-names
2019년 1월에 옵션이 삭제되었습니다.내 해킹 솔루션은 다음과 같습니다.
# hack to override mac tools with homebrew versions (ls, sed, etc)
for p in `find "${HOMEBREW_PREFIX}" -type d -name gnubin` ; do
export PATH="${p}:${PATH}"
done
조금 느리지만(로그인할 때마다 dir를 삭제한다) 강제로 수정하지 않고 동작합니다..bashrc
모든 gnu 툴을 brew와 함께 설치합니다.
@pjz가 제안하는 것을 실행하는 조금 빠른 방법은 다음과 같습니다.
for p in $(ls -d ${HOMEBREW_PREFIX:-/usr/local}/Cellar/*/*/libexec/gnubin); do
export PATH="${p}:${PATH}"
done
물론 이것은 의 모든 GNU 패키지를 상정하고 있습니다.brew
항상 같은 레벨의 디렉토리로 액세스 할 수 있습니다.gnubin
.
또는 속도를 높일 수 있습니다.find
추가함으로써-maxdepth 4
앞에 깃발을 올리다-type d
디렉토리화 범위를 줄일 수 있습니다.
실행 시brew install gnu-sed
최신 홈브루에서는 다음과 같이 보고합니다.
==> Caveats
GNU "sed" has been installed as "gsed".
If you need to use it as "sed", you can add a "gnubin" directory
to your PATH from your bashrc like:
PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
gnu-sed
디폴트로 인스톨 됩니다.gsed
하지만, 만약 당신이 들여다본다면,/opt/homebrew/opt/gnu-sed/libexec/gnubi
를 찾을 수 있습니다.sed
명령어를 입력합니다.따라서 위의 지시에 따라 경로를 갱신하는 것은sed
실행하다gnu-sed
.
언급URL : https://stackoverflow.com/questions/30003570/how-to-use-gnu-sed-on-mac-os-10-10-brew-install-default-names-no-longer-su
'programing' 카테고리의 다른 글
NSString이 특정 문자로 시작되는지 확인하는 방법 (0) | 2023.04.19 |
---|---|
Swift: 어레이를 참조로 전달하시겠습니까? (0) | 2023.04.19 |
배치 파일에서 매개 변수가 비어 있는지 테스트하는 적절한 방법은 무엇입니까? (0) | 2023.04.19 |
SQL Server의 모든 데이터베이스 파일에 대한 정보 나열 (0) | 2023.04.19 |
Ruby에서 문자열을 소문자로 변환하는 방법 (0) | 2023.04.19 |