Ein sauberer Wagen kehrt von einer Textdatei zurück, so dass er aussieht, als wäre er auf der Konsole gedruckt

385
Jaakko

Wie konvertiere ich Wagenrückläufe von einer Textdatei in die Art, wie sie in der Konsole angezeigt werden?

Wenn zum Beispiel ein Programm die folgenden Zeilen auf eine Konsole druckt:

start\n progress 01%\r progress 22%\r progress 54%\r progress 100%\n completed 

Nach einiger Zeit sieht die Ausgabe in der Konsole folgendermaßen aus:

start progress 100%\n completed 

Wenn ich die Ausgabe jedoch in eine Datei übergebe, enthält sie alle Zwischenberichte.

Vorzugsweise eine Lösung, die auf große Protokolldateien> 100 MB angewendet werden kann.

0
Es gibt ein Programm namens "sed", das (unter anderem) sucht und ersetzt, aber keine neuen Zeilenzeichen findet, da es Zeile für Zeile arbeitet. Es gibt jedoch eine Programmiersprache namens perl, die auch als Befehlszeilenprogramm fungieren kann, und sie kann Suchen und Ersetzen ausführen, sodass Sie \ r -Zeichen löschen können. Einige Perl-One-Liner, die in der akzeptierten Antwort hier erwähnt werden, https://superuser.com/questions/416419/perl-for-matching-with-regular-expressions-in-terminal barlop vor 7 Jahren 0
Ich bin mir ziemlich sicher, dass das einfache Löschen nicht funktioniert, da die Zwischenzeichenfolgen "progress 22%" bleiben, die andernfalls wegen "\ r" ohne "\ n" überschrieben würden. Die unten stehende "col" -Antwort hat mein Problem bereits gelöst, aber ich konnte es (2 Tage Timeout) noch nicht als Antwort markieren. Jaakko vor 7 Jahren 0
Die Wörter in Ihrer Frage könnten besser sein, da Ihr Beispiel einige Text- / Zeilenfolgen enthält, die gelöscht wurden und Ihre Wörter nichts über das Löschen von Zeilen erwähnen. barlop vor 7 Jahren 0
Wenn Ihr Betreff Zeilen mit Wagenrücklauf aus der Datei entfernen wäre, wäre das eine gute Beschreibung Ihres Ziels? barlop vor 7 Jahren 0
Das ist etwas anderes, denn wenn der erste Ausdruck "1234 \ r" gefolgt von "321 \ n" ist, wäre das Endergebnis in der Konsole "3214 \ n". Wenn Sie Zeilen mit Wagenrücklauf entfernen, lautet das Ergebnis "321 \ n". Jaakko vor 7 Jahren 0
Durch welche Funktion würde "1234 \ r321 \ n" zu "3214 \ n"? Wenn dies der Fall war, bedeutet dies, dass die 123 umgekehrt wurde. Oder die 123 am Anfang wurde gelöscht und die 4 zum Ende der 321 verschoben. Aber wer sagte etwas über das Umkehren oder Bewegen von etwas? barlop vor 7 Jahren 0
Zum Beispiel in Ubuntu bash gibt $ printf "1234 \ r321 \ n" `in der Konsole 3214 \ n zurück. Nun, zumindest sieht es auf der Konsole so aus, natürlich waren die Daten 1234 \ r321 \ n. Und das ist genau die Frage, ich bin nicht interessiert, was die tatsächlichen Daten sind, aber wie es auf der Konsole aussieht, möchte ich das ohne den Aufwand sparen. Jaakko vor 7 Jahren 0

1 Antwort auf die Frage

1
Jaakko

Werkzeug namens col scheint den Trick zu tun

col -bp <filename.log > fileout.log