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?

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 .


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.