Unter Mac OS 10.10.3 habe ich gnu-sed installiert, indem ich Folgendes eingegeben habe:
brew install gnu-sed --default-names
Wenn ich es erneut tippe, erhalte ich folgende Meldung:
gnu-sed-4.2.2 bereits installiert
Selbst nach dem Neustart des Systems und dem Neustart des Terminals kann ich die GNU-Version von sed immer noch nicht verwenden. Beispielsweise:
echo a | sed ’s_A_X_i’
Rückgabe: schlechtes Flag im Substitutionsbefehl 'i'
Was soll ich tun, damit die GNU-Version funktioniert? Hier sind die Pfade in meiner Variablen $ 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
Es tut mir leid, wenn meine Frage offensichtlich erscheint, aber ich lerne Shell-Scripting selbst und verstehe noch nicht ganz, wie UNIX-Programme installiert sind. Jede Hilfe bei der Verwendung von GNU-kompatiblen Befehlen (in diesem Fall sed, aber bald brauche ich auch andere) auf meinem Mac, ohne Schaden oder unnötige Unordnung zu verursachen, wäre sehr dankbar.
brew
GNU installiertsed
? Ist das Verzeichnis auf IhremPATH
? Was bekommen Sie, wenn Sie tippensed --version
? (BSDsed
wird sich beschweren; GNUsed
wird seine Versionsinformationen melden.) Bis Sie entweder dasbrew
Verzeichnis in Ihrem PATH vor sich haben/usr/bin
oder lernen, den absoluten Pfadnamen für GNU zu verwendensed
, wird GNU nicht ausgeführtsed
. Seien Sie auch vorsichtig mit Zitaten.’
ist im Gegensatz zu einem Textverarbeitungszitat'
.Antworten:
Anmerkung (2019):
Die
--with-default-names
Option wurde seit Januar 2019 entfernt, sodass diese Option jetzt nicht mehr verfügbar ist.Bei der Installation weist Homebrew an, wie der Pfad angepasst werden muss, wenn sed ohne
g
Präfix verwendet werden soll.Sie haben den gnu-sed bereits ohne die
--with-default-names
Option installiert .--with-default-names
Option installiert essed
auf/usr/local/bin/
gsed
In Ihrem Fall müssen Sie also Folgendes tun:
Pfad bei Bedarf aktualisieren ...
oder
gsed
wie von anderen vorgeschlagen verwenden.quelle
Wenn Sie die GNU-Version von
sed
für Mac OS X installieren mit:Das Programm, das Sie verwenden, ist
gsed
.Also zum Beispiel:
Um die Verwendung von GNU-Befehlstools unter Mac OS X zu ergänzen, gibt es hier einen schönen Blog-Beitrag, in dem Sie die Tools unter Linux herunterladen können:
Installieren und verwenden Sie GNU-Befehlszeilentools unter Mac OS / OS X.
quelle
Das
sed
mit OS X gelieferte ist in/usr/bin
.Das
sed
, washomebrew
installiert wird , ist in/usr/local/bin
.Wenn Sie die eine bevorzugen
homebrew
, haben Sie zwei Möglichkeiten:Option 1
Jedes Mal , die Sie verwenden möchten
homebrew
sed
, geben Sieoder vorzugsweise
Option 2
Gehen Sie in Ihrem PATH in Ihrem Login-Profil wie folgt
/usr/local/bin/
vor (dh vorher)/usr/bin
quelle
$ brew install gnu-sed
Mit diesen beiden Befehlen funktioniert gnu-sed ordnungsgemäß
quelle
Wenn Sie den Befehl gnu-sed mit ihren normalen Namen verwenden müssen, können Sie Ihrem PATH von Ihrem bashrc aus ein "gnubin" -Verzeichnis hinzufügen. Verwenden Sie einfach den folgenden Befehl in Ihrer Bash oder Ihrem Terminal.
quelle
--with-default-names
nicht für mich auf Mac OS X 10.14.2 arbeiten , so habe ich einen Symlink namenssed
zugsed
höher in der$PATH
Ich habe auch einen Symlink erstellt, der
sed.1
zu dergsed.1
Manpage höher in der Manpage benannt ist ,$MANPATH
damitman
auf diegsed
Manpage anstelle der Standard-sed
Manpage zugegriffen werden kannquelle
alias sed=gsed
.