Nicht druckbare Zeichen aus Erwartungsprotokollen entfernen?

8

Wie kann ich die folgenden Zeichenfolgen aus meinen Dateien entfernen? ^[[64;8H, ^[[?25h, ^[[1;64rEtc oder vermeiden, erwarten , dass sie in erster Linie hinzufügen?

Hintergrund:

Ich verwende eine Sammlung von Expect-Skripten für bestimmte Aufgaben.

Die Ausgabedateien, die ich sammle, enthalten häufig die oben genannten Zeichentypen (wie in emacs / vi / cat -v angezeigt). Ich habe eine Reihe von tr-Befehlen wie den folgenden ausprobiert, aber es macht nur die [64; 8H usw. sichtbar.

tr -dc '[:print:]\n' < input

BEARBEITEN:

Die Ergebnisse von oben auf einer problematischen Linie

[1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....
Tim Brigham
quelle

Antworten:

6

Du warst nah. Sie wollen

tr -dc '[:print:]\n' <input

Von der tr(1)Manpage:

-c, -C, --complement
verwenden das Komplement von SET1

Aktualisieren

Wenn Sie auch Escape-Sequenzen entfernen möchten, können Sie das folgende sedSnippet verwenden:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

Es stammt aus einer Serverfehlerfrage namens In CentOS 4.4. Wie kann ich Escape-Sequenzen aus einer Textdatei entfernen ?

Joseph R.
quelle
Danke Joseph. Das macht die Zeichen sichtbar, streift sie aber nicht ab. Ich werde die Ergebnisse im Fragentext anzeigen.
Tim Brigham
@ TimBrigham Hilft das Update?
Joseph R.
1

Nach einigem Experimentieren (ich benutze die Fischschale, die alles einfärbt):

perl -pe '
    s/\033\\\\\[(\d+;)*\d*[[:alpha:]]//g;
    s/\033\\\\\]0;//g;
    s/\x7//g;
    s/\033\(B//g;
' expect.log
Glenn Jackman
quelle