Grep ist ein erstaunliches Tool zum Durchsuchen von Protokolldateien und zum Abrufen nützlicher Informationen , aber was ist, wenn Sie eine Protokolldatei mit einer riesigen Liste von Schlüsselwörtern aus einer anderen Datei durchsuchen möchten? Zum Glück ist diese Funktion auch integriert.
Das ist mir passiert, als ich eine Liste aller URLs abrufen wollte, die von einem riesigen IP-Block angefordert wurden, der unseren Server missbräuchlich angreift. Nachdem ich die Liste mit tausend IPs identifiziert und erstellt hatte, musste ich die URLs aus der Hauptprotokolldatei abrufen, um die am häufigsten angeforderten Ressourcen zu identifizieren.
Dazu möchten Sie das -f . verwenden -Argument, mit dem Sie eine Datei für die Liste der zu suchenden Muster angeben können.
-f DATEI, –file=DATEI Muster aus DATEI abrufen, eines pro Zeile. Die leere Datei enthält null Muster und stimmt daher mit nichts überein. (-f wird von POSIX angegeben.)
Angenommen, Ihr Satz von Schlüsselwörtern oder Zeichenfolgen befindet sich in einer Datei namens “searchstrings”, können Sie das Argument in der Befehlszeile wie im folgenden Beispiel verwenden. Da diese Suche eine Menge Daten generieren wird, wird die “> output.txt” ein Teil des Befehls sendet das Ergebnis des Befehls in eine Datei namens output.txt, die separat analysiert werden kann.
grep -f searchstrings filetosearch > output.txt
Das einzige Problem bei der Verwendung des Arguments -f besteht darin, dass grep versucht, die Schlüsselwörter als Muster zu interpretieren, was die Analyse einer extrem großen Datei verlangsamen kann. Sie können also auch den Parameter -F angeben, der grep anweist, nur exakte Übereinstimmungen mit den Strings durchzuführen.
-F, –fixed-strings Interpretiere PATTERN als eine Liste fester Strings, getrennt durch Zeilenumbrüche, von denen jeder any ist abzugleichen. (-F wird von POSIX angegeben.) Werbung
Der vollständige Befehl würde also eher so aussehen:
grep -F -f searchstrings filetosearch > output.txt
Grep ist eine lächerlich mächtige Möglichkeit, Log-Dateien zu durchsuchen, daher lohnt es sich, die man-Datei durchzusehen.