Wie fange ich das ein, was ich im Schwanz sehe?

0

Tail scheint TTY-Befehle zu analysieren. Wenn Befehle ^ M verwenden, um die Zeile zu löschen, & amp; Zeichnen Sie die Zeile in stdout neu, z. B. eine animierte ASCII-Fortschrittsleiste.

Wenn ich eine Datei dort abschließe, wo dies geschieht, sehe ich die animierte Fortschrittsleiste. Ich möchte ein einzelnes "Bild" von Schwanz & amp; schreibe es in eine andere Datei.

Folgendes sehe ich, wenn ich die Datei mit tail ansehe 3%

Hier ist was ich sehe mit less oder wenn ich versuche, das Protokoll programmgesteuert zu analysieren. ^M0%^M1%^M3%

Ich möchte eine Datei erstellen, die nur "3%" enthält oder was auch immer der letzte "Frame" der Animation ist. Ich möchte einen Befehl, der das erfasst, was ich als menschlicher Mensch auf meinem Bildschirm sehe, und es in eine Datei schreibt.

Für ein bisschen Kontext - es ist für eine Web-App. Ich möchte, dass der Browser den neuesten Status abruft. Ersetzen Sie den Inhalt eines Div zu. Ich brauche einen Befehl, der den neuesten "Frame" ausgibt, der für diesen Anwendungsfall geeignet ist.

Eine akzeptable Lösung wäre auch, die Datei live über Websockets zu streamen und die Datei-Clientseite zu analysieren. Obwohl es einen Befehl oder ein Flag gibt, an das ich übergeben kann tail das einfach zu machen.

JoshRibs
quelle

Antworten:

0

Wenn Sie über die Verwendung von Weiterleitungen nachgedacht haben, können Sie STDOUT aus einem Befehl herausnehmen und an eine andere Datei / ein anderes Terminal weiterleiten

Sie können also die Ausgabe des Endstücks einfach umleiten, wie das "Endstück" Datei "& gt; "eine andere Datei"

Fegnoid
quelle
Ja, das habe ich vor dem Posten versucht. Entschuldigung, dass ich nicht geklärt habe. Es leitet die Steuerzeichen um. Es ist der TTY, der die Steuerzeichen parst, wenn ich Schwanz laufen lasse (und ich kann nicht verstehen, warum die Ausgabe erfolgt.) less unterscheidet sich). Ich brauche ein Programm, das repliziert, was die TTY / Konsole macht, wenn ich Tail starte. Das Umleiten der Schwanzausgabe führt zu einer Datei, die sich von dem unterscheidet, was ich in der TTY / Console sehe.
JoshRibs
Es gibt einen Perl-One-Liner, den Sie verwenden können perl -pi -e 'tr/\cM/\n/d; "filename" Das macht im Grunde dasselbe wie dos2unix, wo es alle ^ M (Wagenrücklauf in Windows) durch \ n ersetzt. Dies ist der Wagenrücklauf in * nix, so dass Sie es versuchen könnten tail "file" > "newfile"; perl -pi -e 'tr/\cM/\n/d;' "newfile"
Fegnoid
Aber ich möchte das ^ M nicht nur in Zeilenumbrüche konvertieren, sondern es soll die vorherige Zeile wie in einer Konsole "löschen".
JoshRibs
ok, es gibt wahrscheinlich bessere Möglichkeiten, es zu tun, aber Sie können das Newfile 0 Byte schreiben, bevor Sie es schreiben, der Befehl würde aussehen ... > "newfile"; tail "file" > "newfile"; perl -pi -e 'tr/\cM/\n/d;' "newfile"
Fegnoid
Nicht das, was ich suche, aber danke, dass Sie versucht haben zu helfen.
JoshRibs