Ein Programm, das auf einem Server ausgeführt wird, sendet Textdaten, die durch ein Nullzeichen ( ^A
, SOH) begrenzt sind. Wenn ich über PuTTY auf diesen Server zugreife, überspringt PuTTY die Steuerzeichen. es zeigt sie überhaupt nicht auf seinem "Terminal" -Bildschirm an. Dies macht es sehr schwierig, die Daten zu interpretieren, da es unmöglich ist, zu unterscheiden, wo ein Feld endet und das nächste beginnt. Wenn ich PuTTY Sitzung öffnen Logdatei in einem Texteditor, alle Steuerzeichen sichtbar sind. Kann ich PuTTY so konfigurieren, dass etwas angezeigt wird , wenn es ein Steuerzeichen empfängt? (Die Nachrichten sind im Standard- FIX-Protokoll , wenn jemand neugierig ist.)
Wie PuTTY die Nachricht anzeigt:
14 = 200015 = USD17 = 80100009620 = 022 = 129 = 130 = O31 = 158.92788132 = 320037 = 000000000038 = 039 = 140 = 2
Wie vi dieselbe Meldung anzeigt: (In vi wird ^A
blau angezeigt, um das Lesen zu erleichtern.)
^ A 14 = 2000 ^ A 15 = USD ^ A 17 = 801000096 ^ A 20 = 0 ^ A 22 = 1 ^ A 29 = 1 ^ A 30 = O ^ A 31 = 158,927881 ^ A 32 = 3200 ^ A 37 = 0000000000 ^ A 38 = 0 ^ A 39 = 1 ^ A 40 = 2
Wenn ich die Nullen durch Leerzeichen ersetze, ist das auf einen Blick verständlich:
14 = 2000 15 = USD 17 = 801000096 20 = 0 22 = 1 29 = 1 30 = O 31 = 158.927881 32 = 3200 37 = 0000000000 38 = 0 39 = 1 40 = 2
quelle
tr
oder nicht verwendensed
, um sie sichtbar zu machen, bevor Sie sie an den Editor weiterleiten? Vim könnte auch die Eingabe filtern ...^A
ist nicht das Nullzeichen, das Nullzeichen ist^@
.^A
ist das erste Zeichen nach dem Nullzeichen.Antworten:
Ersetzen Sie die nicht druckbaren Zeichen durch etwas Lesbares.
Vor
nach dem
quelle
Verwenden Sie stdbuf (von coreutils ) und tr :
Hinweis: stdbuf wird beim Ersetzen durch eine neue Zeile nicht benötigt, d. H
tr '\001' '\n'
Oder benutze awk / gawk
Dies funktioniert unabhängig vom Terminal. Weitere Informationen finden Sie unter Was ist Pufferung ? .
quelle