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'

6voto

fmmarques Punkte 291

Der korrekte Weg wäre die Verwendung von "--", um die Verarbeitung von Argumenten zu stoppen, wie bereits erwähnt. Das liegt an der Verwendung von getopt_long (GNU C-Funktion aus getopt.h) im Quelltext des Tools.

Das ist der Grund, warum Sie das gleiche Phänomen bei anderen Kommandozeilen-Tools beobachten können; da die meisten von ihnen GNU-Tools sind und diesen Aufruf verwenden, zeigen sie das gleiche Verhalten.

Nebenbei bemerkt - getopt_long gibt uns die Möglichkeit, zwischen -rlo und --really_long_option und der Kombination von Argumenten im Interpreter zu wählen.

5voto

Colin vH Punkte 517

Wenn Sie ein anderes Dienstprogramm verwenden, das ein einzelnes Argument an grep übergibt, können Sie verwenden:

'[-]X'

2voto

ghostdog74 Punkte 305138

Können Sie nawk verwenden

$ nawk '/-X/{print}' file

-1voto

sasank Punkte 1

Grep "^-X" Datei

Es wird alle Zeilen der Datei durchsuchen und auswählen. ^ im grep"^" bedeutet eine Zeile, die mit

-3voto

XINU Punkte 7
ls -l | grep "^-"

Ich hoffe, dass dieser Artikel für Ihre Zwecke geeignet ist.

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