W systemie Mac OS 10.10.3 zainstalowałem gnu-sed, wpisując:
brew install gnu-sed --default-names
Kiedy wpisuję go ponownie, pojawia się komunikat:
gnu-sed-4.2.2 już zainstalowany
Jednak nawet po ponownym uruchomieniu systemu i ponownym uruchomieniu Terminala nadal nie mogę używać seda w wersji GNU. Na przykład:
echo a | sed ’s_A_X_i’
zwraca: złą flagę w poleceniu podstawienia 'i'
Co powinienem zrobić, aby wersja GNU działała? Oto ścieżki w mojej zmiennej $ 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
Przepraszam, jeśli moje pytanie wydaje się oczywiste, ale sam uczę się skryptów powłoki i nie do końca rozumiem, jak instalowane są programy UNIX. Jakakolwiek pomoc w używaniu poleceń zgodnych z GNU (w tym przypadku sed, ale wkrótce będę również potrzebować innych) na moim Macu bez powodowania uszkodzeń lub niepotrzebnego bałaganu byłaby bardzo doceniona.
brew
zainstalowałem GNUsed
? Czy to twój katalogPATH
? Co otrzymasz, piszącsed --version
? (BSDsed
będzie narzekać; GNUsed
poda informacje o swojej wersji). Dopóki nie będziesz mieć przed sobąbrew
katalogu na swojej PATH/usr/bin
lub nie nauczysz się używać bezwzględnej ścieżki dostępu do GNUsed
, nie będziesz uruchamiał GNUsed
. Uważaj też na cytaty.’
jest cytatem z edytora tekstu, w przeciwieństwie do'
.Odpowiedzi:
Uwaga (2019):
Ta
--with-default-names
opcja została usunięta od stycznia 2019 r., Więc teraz ta opcja nie jest już dostępna.Podczas instalacji Homebrew instruuje, jak dostosować ścieżkę, jeśli chce się używać seda bez
g
prefiksu.Masz już zainstalowany gnu-sed bez
--with-default-names
opcji.--with-default-names
opcją,sed
do której instaluje się/usr/local/bin/
gsed
W twoim przypadku musisz więc:
W razie potrzeby zaktualizuj ścieżkę ...
$ echo $PATH | grep -q '/usr/local/bin'; [ $? -ne 0 ] && export PATH=/usr/local/bin:$PATH $ echo a | sed 's_A_X_i'
lub użyj
gsed
zgodnie z sugestiami innych.źródło
Podczas instalowania wersji GNU
sed
dla Mac OS X przy użyciu:Program, którego używasz, to
gsed
.Na przykład:
$ 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
Ponadto, aby pochwalić użycie narzędzi poleceń GNU w systemie Mac OS X, jest tutaj fajny wpis na blogu, w którym można pobrać narzędzia z systemu Linux:
Zainstaluj i używaj narzędzi wiersza poleceń GNU w systemie Mac OS / OS X
źródło
To,
sed
co jest dostarczane z OS X, jest w formacie/usr/bin
.Ten,
sed
któryhomebrew
instaluje, jest w/usr/local/bin
.Jeśli wolisz korzystać z
homebrew
tego, masz dwie możliwości:opcja 1
Za każdym razem, gdy chcesz użyć
homebrew
sed
, wpisz/usr/local/bin/sed
lub najlepiej
Opcja 2
Przejdź do
/usr/local/bin/
przodu (tj. Wcześniej)/usr/bin
w swojej PATH w swoim profilu logowania, w ten sposóbexport PATH=/usr/local/bin:<other places>
źródło
$ brew install gnu-sed
$ export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
Z tymi dwoma poleceniami gnu-sed działa poprawnie
źródło
Jeśli potrzebujesz użyć polecenia gnu-sed z ich normalnymi nazwami, możesz dodać katalog "gnubin" do swojej PATH z twojego bashrc. Po prostu użyj następującego polecenia w swoim bash lub terminalu.
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
źródło
--with-default-names
nie działa mi na Mac OS X 10.14.2 więc stworzyłem dowiązania o nazwiesed
nagsed
wyższy w$PATH
Utworzyłem również dowiązanie symboliczne nazwane
sed.1
do stronygsed.1
podręcznika wyżej w tym,$MANPATH
więcman
dostęp dogsed
strony podręcznika zamiast domyślnejsed
strony podręcznikaźródło
alias sed=gsed
.