Ich versuche, die Ausgabe eines Befehls zu analysieren, der auf den Bildschirm geschrieben werden soll. Er enthält Daten, die durch Move-to-Origin-Steuersequenzen getrennt sind (für den VT220 ESC[1;1H). Ich brauche nur den letzten Teil (also nach dem letzten Move-to-Origin).
Ich habe versucht, dies auf verschiedene Arten zu tun (hauptsächlich mit awk und sed), aber das Problem besteht immer darin, dass Teile der Steuersequenz eine besondere Bedeutung haben (für das Programm, nicht nur für die Shell) und ich sie nicht zitieren kann, wenn ich die Ausgabe von tput ersetze.
Irgendwelche Vorschläge?
BEARBEITEN:
Hier ist ein Beispiel dessen, was ich analysieren möchte ( ESCist das Escape-Zeichen):
Page 1; line 1
Page 1; line 2
ESC[1;1HPage 2; line 1
Page 2; line 2
ESC[1;1HPage 3; line 1
Page 3; line 2
Ich möchte Folgendes erhalten, was auf dem Terminal angezeigt wird, nachdem das Programm ausgeführt wurde.
Page 3; line 1
Page 3; line 2
Antwort1
Der einfachste Weg, Ihr Problem zu lösen:
- Sie konvertieren alle Steuersequenzen mit „uuencode -m v“ oder „xxd“.
- Jetzt können Sie wie gewohnt Text mit awk verarbeiten
- schließlich erfolgt die Rückkonvertierung mit 'uudecode -o -' oder 'xxd -revert'
Alternativ verwenden Sie: bbe - ein sed-ähnlicher Editor für Binärdateien
wenn Sie eine konkretere Antwort brauchen, brauche ich ein konkreteres Programmbeispiel