Ich habe eine Eingabedatei mit dieser Zeile (Benutzerdaten / Spalten entfernt) und einige tausend mehr. XCE ist ein nicht konvertierter Hex-Wert aus der Client-Datei.
412640 xCE
Wenn ich es durch diesen awk Befehl starte:
awk -F'\t' '{if ($1 == "412640" ) print $1 "\t" $2}' TEST.txt > test1.txt
Die Ausgabe in test1.txt hat xCE in Î konvertiert, was auch passieren soll.
Wenn ich die gesamte Datei ohne if ausführe, lautet der folgende Befehl:
awk -F'\t' '{print $1 "\t" $2}' TEST.txt > test2.txt
Die Ausgabe in test2.txt enthält noch xCE, und als ich es versuchte:
awk -F'\t' '{if ($1 == $1 )print $1 "\t" $2}' TEST.txt > test2.txt
Die Ausgabe in Test2 enthält noch xCE.
Irgendwelche Ratschläge, wie man immer die konvertierte Ausgabe erhält?
Ich benutze:: GNU Awk 3.1.7 Meine Codepage ist UTF-8 Auf Red Hat 6.7
BEARBEITEN: Nach ein paar weiteren Unit-Tests der beiden Befehle 'good' / 'bad' awk kann ich die 'bad'-Ausgabe nicht immer replizieren. Je größer die Gesamtanzahl der Zeilen ist, desto unwahrscheinlicher ist es, die Hex-Werte zu konvertieren, aber nicht in 100% der Fälle. Ich versuche jetzt, die Größe des Puffers für awk zu steuern, unter der Annahme, dass es mit dem Schreiben direkt vom Puffer zur Ausgabe im Gegensatz zum Schreiben in interne temporäre Dateien zusammenhängt, wenn der Puffer für andere Dinge benötigt wird.
print $1 "\t" $2
soll konvertierenxCE
zuÎ
?Antworten:
Probieren Sie etwas aus
natürlich ändern Sie den Ausdruck printf nach Ihren Wünschen und fügen Sie den hinzu
if
das$2
...quelle
if
unnötige Operationen zu überspringen ...