Lese und entferne Zeilen in der Datei, warte auf neue Zeilen am Ende


3

Eigentlich suche ich ein Bash-Skript, das eine Datei überwacht, jede neue Zeile in der Datei ausführt und dann die Zeile entfernt. Wenn die gesamte Datei verarbeitet ist, muss das Skript auf neue Zeilen warten.

Ich suchte nach Antworten, fand aber kaum mehr als das Lesen jeder Zeile in einer Datei.

Übrigens, ist bash bei einer solchen Aufgabe effizient oder sollte ich ein kleines C-Programm dafür erstellen?

Antworten:


0

Das Folgende erledigt alles, was Sie verlangen, mit Ausnahme des Entfernens der Zeilen aus der Datei:

$ ./script && tail -n0 -f script | while read line; do eval "${line}"; done;

Führen Sie zuerst die Datei aus, und missbrauchen Sie dann tail und eval. Sie können das gewünschte Verhalten ganz einfach approximieren.


Danke, da die Schleife am Ende der Datei beginnt, kann ich tun, was ich will, ohne Zeilen zu entfernen. Also genau das, was ich brauche :)
José Mélançon

0

Wenn das Entfernen der Linie kein Muss ist, können Sie auch versuchen:

 tail -f filename | parallel eval "{}"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.