498 Stimmen

Wie kann ich nach einer Zeichenfolge suchen, die mit einem Bindestrich beginnt?

Ich möchte nach der Zeichenfolge suchen, die mit einem Bindestrich beginnt, z. B. -X in einer Datei, aber es verwechselt dies mit einem Befehlszeilenargument.

Ich habe es versucht:

grep "-X"
grep \-X
grep '-X'

665voto

newacct Punkte 114757

Verwendung:

grep -- -X

Dokumentation

Verwandt: Was bedeutet ein einfacher Doppelstrich? (Dank an Verrückt nach Natty ).

76voto

Chad Gorshing Punkte 2780

Der Bindestrich ist in der Bash ein Sonderzeichen, wie unter http://tldp.org/LDP/abs/html/special-chars.html#DASHREF . Wenn man dies einmal ausblendet, kommt man an der Bash vorbei, aber Grep hat immer noch eine eigene Bedeutung für Bindestriche (indem es Optionen anbietet).

Sie müssen also wirklich zweimal entkommen (wenn Sie die anderen genannten Antworten nicht verwenden wollen). Das Folgende wird/sollte funktionieren

grep \\-X
grep '\-X'
grep "\-X"

Eine Möglichkeit, auszuprobieren, wie die Bash Argumente an ein Skript/Programm weitergibt, besteht darin, ein .sh-Skript zu erstellen, das einfach alle Argumente echot. Ich verwende ein Skript namens echo-args.sh, mit dem ich von Zeit zu Zeit spiele; es enthält nur die Argumente:

echo $*

Ich rufe sie auf als:

bash echo-args.sh \-X
bash echo-args.sh \\-X
bash echo-args.sh "\-X"

Sie haben die Idee.

39voto

Thomas Punkte 160390

grep -e -X reicht aus.

33voto

John Henry Punkte 1579
grep -- -X
grep \\-X
grep '\-X'
grep "\-X"
grep -e -X
grep [-]X

8voto

ezpz Punkte 11421

Ich habe keinen Zugang zu einem Solaris-Rechner, aber grep "\-X" funktioniert bei mir unter Linux.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X