tail -va Datei, während eine Liste von Wörtern ausgeschlossen wird

13165
John

Ich möchte eine Protokolldatei abschließen, in die fortlaufend geschrieben wird, aber verschiedene Einträge ausschließen, die "häufig" sind. Ich sehe nur Fehler usw., wenn sie ausgelöst werden. Ich kann an grep -v "pattern" pfeifen, möchte aber idealerweise eine Datei mit Einträgen zum Überspringen verwenden. Irgendwelche Ideen?

2

4 Antworten auf die Frage

5
Wuffers

Sie können grep -v "pattern"wie gesagt verwenden. Aber anstatt zu patternverwenden

`cat file_with_entires_to_skip` 

Denken Sie daran, die Backtics einzubeziehen. Ihr Befehl würde also so aussehen:

tail -v FILE | grep -v "`cat FILE_WITH_ENTRIES_TO_SKIP`" 
Machen Sie das grep -v "` cat FILE_WITH_ENTRIES_TO_SKIP` ", oder die Shell erweitert Sonderzeichen in der Musterliste. Gilles vor 14 Jahren 0
Du meinst "grep -v" \ "cat FILE_WITH_ENTIRES_TO_SKIP \" "? (Sie müssen Backtics in Markdown entkommen.) Wuffers vor 14 Jahren 0
2
garyjohn

Mit dieser -fOption grepkönnen Sie eine Datei angeben, die Muster enthält, ein Muster pro Zeile. Siehe die grep(1)Manpage.

Darüber hinaus unbufferdeaktiviert der auf einigen Systemen verfügbare Befehl die Ausgabepufferung, die normalerweise in Pipelines auftritt. Das Hinzufügen des grepFilters kann ansonsten die Ausgabe Ihrer Pipeline verzögern. Weitere unbuffer(1)Informationen finden Sie in der Manpage.

Sie können erwähnen, dass Sie sowohl -f als auch -v für die gegebenen Anforderungen benötigen. Hans-Peter Störr vor 11 Jahren 0
Es klingt so, als würden sie bestimmte Ergebnisse ausschließen, nicht Muster, so dass eine Suche mit festem String (-F) angemessener wäre. Ich würde mit tail -v [file_to_tail] | gehen grep -Fvf [file_with_list_of_lines_to_exclude] ` Hammer Bro. vor 7 Jahren 0
0
Velociraptors

Verwenden Sie grep -f FILEund es werden Muster aus dieser Datei erhalten. Weitere Informationen finden Sie in der Manpage .

0
Ian C.

Mein grep enthält eine --exclude-from=FILEOption, mit der ich Ausschlussmuster aus einer Datei hinzufügen kann. Ich habe:

my-macbook-pro:Sun America ianchesal$ grep --version grep (GNU grep) 2.5.1 

Sie könnten also folgendes tun:

tail -f <file> | grep --exclude-from=excludes.txt 
Msgstr "Dateien überspringen, deren Basisname mit einer der aus FILE gelesenen Dateinamen übereinstimmt (mit Platzhalterabgleich wie unter --exclude beschrieben)." Es ist also das Überspringen von Dateien, keine Übereinstimmungen Janus Troelsen vor 11 Jahren 0