Tail, Cat und Grep gleichzeitig eine Datei

2697
Toni Kostelac

Ich muss also eine Protokolldatei in Linux überwachen, und ich möchte den Inhalt katzen (um alle vorherigen Einträge anzuzeigen) sowie die Protokolldatei unter gleichzeitiger Verwendung des grep-Protokolls ausfiltern, um die Elemente herauszufiltern, die ich aus dem Protokoll sehen möchte . Es wäre auch schön, wenn das Ende dort weitergeht, wo der Befehl cat keine Einträge mehr anzeigt.

Wie würde ich das machen?

BEARBEITEN:

Um meine Frage etwas klarer zu machen, möchte ich folgendes:

log.txt: Line 1 <--- Starting from here is what lines I need Line 2 Line 3 Line 4 Line 5 <--- Here is where the tail command will start displaying Line n - 1 Line n <--- Here is where the tail command will continue to go 

Ich muss in der Lage sein, das alles zu packen und es zu greifen.

0

2 Antworten auf die Frage

3
JanS

Ich weiß nicht, ob Sie danach suchen, aber Sie könnten dies versuchen:

grep "pattern you are looking for" log.txt;tail -n 0 -f log.txt | grep "pattern you are looking for" 

es ruft nacheinander zwei Befehle auf. Zuerst grepen Sie das gewünschte Muster aus der Protokolldatei und starten dann tail -f am Ende der Datei, um die Ausgabe in grep umzuleiten.

Ich schlage jedoch vor, dass Sie dies nur mit einem Befehl tun. Sie können die Anzahl der anzuzeigenden Zeilen mithilfe des Parameters -n angeben (+1 steht ab der ersten Zeile):

tail -n +1 -f log.txt | grep "pattern you are looking for" 
2
fedorqui

Ich würde so etwas machen

tail -f log_file | grep -E "^|your_pattern" 

Testen Sie es, indem Sie zwei Registerkarten öffnen.

Führen Sie diesen Befehl im ersten Schritt aus

while :; do echo "$v"; ((v++)); sleep 1; done > mytest 

Das heißt, generieren Sie einen kontinuierlichen Strom, der einer Datei jede Sekunde eine Nummer hinzufügt mytest

Sagen Sie dann auf der anderen Registerkarte

tail -f mytest | grep -E "^|2" 

Das heißt, taildie Datei ununterbrochen und grepfür zwei Muster: ^alles abgleichen und 2. Auf diese Weise wird ^alles abgeglichen, wodurch alle Zeilen angezeigt werden, und 2nur die Zeilen, die Sie hervorheben möchten. Weitere Informationen zu diesem Trick in „Grep“, die statt Filter hervorgehoben werden .

Ich habe meine Frage bearbeitet, um genauer zu sein, was ich brauche. Toni Kostelac vor 8 Jahren 0
+1 für den süßen Trick Die ursprüngliche Frage ist jedoch unmöglich. MariusMatutiae vor 8 Jahren 1