Escape doppeltes Zitat in grep

85

Ich wollte nach Schlüsselwörtern mit doppelten Anführungszeichen suchen. Um ein einfaches Beispiel zu geben:

echo "member":"time" | grep -e "member\""

Das passt nicht zusammen. Wie kann ich es reparieren?

Qiang Li
quelle

Antworten:

128

Das Problem ist, dass Sie der Eingabezeichenfolge nicht korrekt entkommen. Versuchen Sie Folgendes:

echo "\"member\":\"time\"" | grep -e "member\""

Alternativ können Sie doppelte Anführungszeichen in einfachen Anführungszeichen verwenden:

echo '"member":"time"' | grep -e 'member"'

Es ist eine Frage der Präferenz, die Sie klarer finden, obwohl der zweite Ansatz Sie daran hindert, Ihren Befehl in einen anderen Satz einfacher Anführungszeichen (z ssh 'cmd'. B. ) zu verschachteln .

cmh
quelle
1
Ob das funktioniert ? echo '"member":"time"' |grep -e "member"nicht getestet
Ameise
Fast. Es muss sein echo '"member":"time"' |grep -e 'member"'. Beide Ansätze sind gültig, aber ich bevorzuge explizite Flucht, da die Absicht klarer ist.
cmh
Ja, vielleicht bearbeiten Sie Ihre Antwort, wenn Sie möchten, dass jemand dies bevorzugt (+1)
Ameise
Dies (mit Backslash) funktioniert unter Windows für mich nicht. Eigentlich funktioniert es teilweise, aber ich kann die Ausgabe nicht in eine Datei umleiten.
Radim Cernej
@RadimCernej Ich würde empfehlen, eine Windows-spezifische Frage zu stellen - sie scheint außerhalb des Rahmens dieser Frage zu liegen.
cmh