GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Grep in einer riesigen Logdatei (>14 GB) nur die letzten x GB?

Lösung 1:

Ich denke, Sie könnten tail verwenden, um nur die letzten 4 GB oder so auszugeben, indem Sie den -c verwenden Schalter

-c, --bytes=[+]NUM
gib die letzten NUM Bytes aus; oder verwenden Sie -c +NUM zur Ausgabe beginnend mit Byte NUM jeder Datei

Sie könnten wahrscheinlich auch etwas mit dd machen, indem Sie bs=1 setzen und skip ing zu dem Offset, mit dem Sie beginnen möchten, z. B.

dd if=file bs=1024k skip=12g | grep something

Lösung 2:

Ich poste dies nur, weil einige der Kommentare danach gefragt haben.

Was ich am Ende verwende, war (15 GB Datei). Es hat sehr schnell funktioniert und mir eine Menge Zeit gespart.

tail -f -c 14G file | grep something

Ich habe auch einen sehr rudimentären Benchmark für dieselbe Datei durchgeführt. Getestet habe ich:

grep xxx-Datei
// dauerte ewig (> 5 Minuten)

dd if=Datei bs=1 skip=14G | grep xxx
// sehr schnell <1 Sek.

Schwanz -c 14g | grep xxx
// Ziemlich schnell <2 Sekunden

die tail ist nur etwas kürzer.

Hinweis: das verwendete Suffix g und G unterscheiden sich je nach Befehl (Ubuntu 15.10)

Lösung 3:

Dies beantwortet nicht die Titelfrage, aber es wird das tun, was Sie tun möchten. Verwenden Sie tac, um die Datei umzukehren, und verwenden Sie dann grep, um Ihre Zeichenfolge zu finden. Wenn Ihre Zeichenfolge nur einmal oder eine bekannte Anzahl von Malen in der Datei vorkommt, lassen Sie sie laufen, bis sie die bekannte Anzahl von Vorkommen findet. Auf diese Weise wird es immer noch gefunden, wenn Ihre Annahme darüber, wo es sich in der Datei befindet, falsch ist. Wenn Sie es einschränken möchten, können Sie dies mit head tun. Der Head-Befehl würde zwischen tac und grep stehen.

Der Befehl sieht also so aus:

tac < logfile | grep myString

Linux
  1. Grep Word in einer Datei und dann die Datei kopieren?

  2. Ausgabe nach Stdout und gleichzeitig Grep in eine Datei?

  3. Komma zwischen den Anführungszeichen nur in einer kommagetrennten Datei entfernen?

  4. Nur das erste Vorkommen nur mit Grep finden?

  5. Eine Zeile nur an eine Datei anhängen, wenn sie noch nicht existiert

Zsync – Ein Dateiübertragungsprogramm, um nur die neuen Teile einer Datei herunterzuladen

Das Grep-Befehls-Tutorial mit Beispielen für Anfänger

Die 15 besten Linux-Protokollanzeige- und Protokolldatei-Verwaltungstools

Drucken Sie die letzte Zeile einer Datei über die CLI

diff, um nur die Dateinamen auszugeben

Wie erfasst man die Ausgabe eines Top-Befehls in einer Datei unter Linux?