2012-08-16 17 views
50

Ich wollte Grep für Keywords mit doppelten Anführungszeichen innerhalb tun. Um ein einfaches Beispiel zu geben:Escape doppelte Zitat in Grep

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

Das stimmt nicht überein. Wie man es repariert?

Antwort

80

Das Problem ist, dass Sie nicht richtig den Eingabestring zu entkommen, versuchen:

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

Es ist eine Frage der Präferenz:

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

Alternativ Sie unescaped doppelte Anführungszeichen in einfache Anführungszeichen verwenden können was Sie klarer finden, obwohl der zweite Ansatz verhindert, dass Sie Ihren Befehl in eine andere Menge von einfachen Anführungszeichen verschachteln (zB ssh 'cmd').

+0

+1 schön & einfach! – alfasin

+1

wird das funktionieren? 'echo '" Mitglied ":" Zeit "' | grep -e" Mitglied "' hat nicht getestet – ant

+0

Fast. Es muss "echo" sein "member": "time" '| grep -e' member "''. Beide Ansätze sind gültig, aber ich bevorzuge explizite Escape, da die Absicht klarer ist. – cmh

Verwandte Themen