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

Verwenden von tail, um einer Datei zu folgen, ohne die neuesten Zeilen anzuzeigen

Dasselbe wie bei @muru, aber unter Verwendung des Modulo-Operators anstelle von Speichern und Löschen:

tail -fn+1 some/file | awk -v n=30 '
   NR > n {print s[NR % n]}
   {s[NR % n] = $0}
   END{for (i = NR - n + 1; i <= NR; i++) print s[i % n]}'

Eventuell mit awk puffern:

tail -n +0 -f some/file | awk '{b[NR] = $0} NR > 30 {print b[NR-30]; delete b[NR-30]} END {for (i = NR - 29; i <= NR; i++) print b[i]}'

Der awk-Code, erweitert:

{
    b[NR] = $0 # save the current line in a buffer array
}
NR > 30 { # once we have more than 30 lines
    print b[NR-30]; # print the line from 30 lines ago
    delete b[NR-30]; # and delete it
}
END { # once the pipe closes, print the rest
    for (i = NR - 29; i <= NR; i++)
        print b[i]
}

Das ist nicht sehr effizient, weil es die Datei zwei Sekunden nach dem letzten Lesen erneut liest und Sie Zeilen verpassen, wenn die Ausgabe zu schnell kommt, aber ansonsten erledigt es den Job:

watch 'tail -n40 /path/to/file | head -n10'

Linux
  1. Den Inhalt einer Datei in die Zwischenablage kopieren, ohne den Inhalt anzuzeigen?

  2. Wie lösche ich die ersten N Zeilen einer ASCII-Datei mit Shell-Befehlen?

  3. Holen Sie sich die neueste Datei in einem Verzeichnis unter Linux

  4. Wie verwende ich die Zeilen einer Datei als Argumente eines Befehls?

  5. Python FTP ruft die neueste Datei nach Datum ab

Verwenden der SSH-Konfigurationsdatei

Kopieren Sie Dateiinhalte in die Zwischenablage, ohne sie anzuzeigen

5 Möglichkeiten, die Anzahl der Zeilen in einer Datei zu zählen

Wie kann man die -f-Ausgabe mit Farben nur mit Awk anpassen und den Rest der Ausgabe anzeigen?

Wie kann ich die Zeilen in einer Datei mit Standardwerkzeugen unter Red Hat Linux zufällig anordnen?

Ändern Sie die Reihenfolge der Zeilen in einer Datei