Grep mit Anführungszeichen
Ich versuche zu Scannen ist ein Fehler-log nach Zeilen mit 503-Fehler, so bin ich grepping für " 503
(Zitat Raum 503).
Dies scheint einfach, aber es funktioniert nicht:
grep '" 503 ' access.log
Bekomme ich die folgende Fehlermeldung:
bash: -c: line 0: unexpected EOF while looking for matching `"'
bash: -c: line 1: syntax error: unexpected end of file
- Sollte dies funktionieren. Sie sicher, dass Sie nicht alias grep oder so etwas? ", die grep"? "geben Sie grep"?
- Die Fehlermeldung zeigt "bash -c", so sind Sie etwas wie der Versuch zum einbetten von einfachen Anführungszeichen innerhalb von einfachen Anführungszeichen?
- Hmm, funktioniert bei mir in der bash genau so, wie Sie es haben
- Ja, ich benutze grep, oft mit keine Probleme.
- das "problem" mit den modernen shells ist, dass Sie oft zu entkommen sowas automatisch
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint, wie Sie es läuft über ein system (), in einige Sprachen, sind Sie nicht? Versuchen:
oder:
Direkt in der shell nur
grep '" 503 ' access.log
arbeiten. Zum reproduzieren des Problems muss ich tun:Dies ist in der Tat syntax-Fehler. Zu machen, dass die Arbeit, die ich brauche:
Sind Sie irgendwie aufrufen
bash -c ...
. Vielleicht indirekt. Sie brauchen, um herauszufinden, dass Sie, wie es heißt, um herauszufinden, was Zitate sind in der Kollision an.Debuggen seltsame Effekte, wie dieser, mit "set-x", um die shell-Erweiterungen, und dem, was der computer denkt über Ihren Befehl.
Ich glaube, ich habe es jetzt funktioniert (nicht sicher, weil ich noch keine Ergebnisse, aber nicht ein Fehler).
Der Grund ist, weil ich bin übergeben Sie es durch einen ssh-Befehl wie den folgenden, und ich glaube, SSH ist dabei einige escape-Tricks:
Sie es zu es scheint so zu sein Update:
Vielen Dank für alle Zeit.
'" 503 '
argument, dann übergibt die Argumente an ssh. ssh geht dann die Argumente, es wurde unverändert von der shell auf dem entfernten system. Die Schale sieht eine unübertroffene double-quote-Zeichen. (Es ist wahrscheinlich ein bisschen mehr als das, aber das ist die Allgemeine Idee.)Wurde das Thema durch einige fehlerhafte Direktiven in
.bashrc
.