Ich möchte die Abfragen " GET " aus meinen Serverprotokollen abrufen.
Dies ist beispielsweise das Serverprotokoll
%Vor%Wenn ich versuche mit einfachen grep oder awk,
%Vor%es gibt
aus %Vor%Ich möchte nur Folgendes anzeigen: Hallo und ss
Gibt es eine Möglichkeit, dies zu tun?
Angenommen, Sie haben gnu grep, können Sie Perl-Regex verwenden, um einen positiven Lookbehind zu machen:
%Vor%Wenn du gnu grep nicht hast, rate ich dir einfach sed zu benutzen:
%Vor%Wenn du Gnu sed hast (was komisch wäre, wenn du kein gnu grep hast, aber gnu sed hast), kann das sehr vereinfacht werden:
%Vor% Die Quintessenz hier ist, Sie brauchen sicherlich keine Rohre, um dies zu erreichen. grep
oder sed
allein wird ausreichen.
Da in diesem Fall die Protokolldatei eine bekannte Struktur aufweist, können Sie cut
verwenden Ziehen Sie die 7. Spalte heraus (Felder werden standardmäßig mit Tabs gekennzeichnet).
Verwenden Sie eine Pipe, wenn Sie grep verwenden:
%Vor%[^ /] bedeutet, dass die Buchstaben nach dem ^ -Symbol aus der grep-Ausgabe extrahiert werden
Es ist oft einfacher, eine Pipeline als einen einzelnen komplexen regulären Ausdruck zu verwenden. Dies funktioniert mit den von Ihnen bereitgestellten Daten:
%Vor%Diese Pipeline gibt die folgenden Ergebnisse zurück:
%Vor%Es gibt sicherlich andere Möglichkeiten, um die Arbeit zu erledigen, aber das funktioniert offenkundig auf dem bereitgestellten Korpus.
Ich habe versucht, dies zu tun und stieß auf diesen Link: Ссылка
Zusammenfassung: Verwenden Sie grep, um übereinstimmende Zeilen zu finden, und verwenden Sie dann awk, um das Muster zu finden und das nächste Feld auszudrucken:
%Vor%Wenn Sie die einzigartigen Vorkommen kennen möchten:
%Vor%