Ich habe eine große Protokolldatei, die ich versuche, es für bestimmte Wörter zu scannen. Im Allgemeinen werde ich einige Wörter haben, die ich auf meiner großen Protokolldatei grep und die Linie drucken muss, die diese Wörter enthält.Wie grep nach Zeilen, die bestimmte Wörter in einer Protokolldatei enthalten?
Ich weiß, wie einfach Grep in einer Datei zu tun. Angenommen, mein Dateiname lautet abc.log
und ich muss eine Zeile finden, die das Wort "Hallo" enthält, dann mache ich das immer so und druckt die Zeile für mich aus.
grep -i "hello" abc.log
Aber ich weiß nicht, wie man das Grep für die Kombination von Wörtern tut. Das heißt, ich hätte eine Liste von Wörtern und ich scanne meine abc.log-Datei nach all diesen Wörtern und ich drucke die Zeilen aus, die diese Wörter einzeln enthalten.
#!/bin/bash
data="hello,world,tester"
# find all the lines which contains word hello or world or tester
Also in meinem oben Shell-Skript Ich werde meine Datenvariable geteilt und für hallo Wort suchen so jede Zeile in abc.log die hallo Wort enthält, werde ich es ausdrucken und in ähnlicher Weise mit Welt und Tester sowie.
Ich versuche, dieses ziemlich generische zu machen, so dass ich nur meine Liste der Wörter in der Datenvariablen hinzufügen muss, ohne die tatsächliche Logik der Protokollierung zu berühren.
dank o11c. In meinem Fall können Muster sehr stark wachsen, so dass der Ansatz der Datei gut ist, aber ich wollte noch etwas hinzufügen - drucken Sie die Zeile nicht aus, wenn sie ein bestimmtes Wort enthält. Wie werde ich das mit Ihrem derzeitigen Ansatz tun? – john
@ user2809564 pipe die erste 'grep' durch' grep -v wordtoexclude' (oder '-e' oder' -f', etc) – o11c
Danke. Es kann möglich sein, dass ich auch mehrere Muster ausschließen kann, also gibt es eine Möglichkeit, eine Datei zu erstellen, die Muster enthalten und Muster ausschließen soll, und diese Datei dann zum Ausführen des Grep zu verwenden? – john