Wie kann ich eine Datei mit vielen Hex-Zahlen in Dezimalzahlen konvertieren?
Beispiel: Datei1
0x59999
0x5acdc
0xffeff
ich will starten
$ cat file1 | util | cat >file2
und erhalte file2 mit so etwas wie:
1021489
1249230
3458080
(Die Zahlen in der Beispielausgabe sind zufällig, da ich so lange Hex-Zahlen nicht in Dezimalzahlen konvertieren kann.)
UPDATE: Ich habe dies mit dem folgenden Perl-Befehl gelöst:
perl -pe '$_=hex;$_.="\n"'
Gibt es eine bessere Lösung? Die eigentliche Aufgabe besteht darin, Hex-Zahlen sortieren zu können.
linux
bash
shell-script
osgx
quelle
quelle
cat
Befehle in Ihrer hypothetischen Pipeline sollte erforderlich sein.Antworten:
Die Antwort von John T ist der Weg für Hex-Konvertierungen, aber Sie können sie auch auf diese Weise ausführen (die auch für andere Basen verwendet werden kann):
Demonstration:
Bearbeiten:
Der einzige Vorteil gegenüber der Antwort von John T besteht darin, dass diese leicht angepasst werden kann, um andere Basen in Dezimalzahlen umzuwandeln. Sein ist ziemlich viel schneller.
Dieser
gawk
Befehl scheint etwas schneller zu sein als Johns Shell-Version:Es ist ungefähr so schnell wie Ihr Perl-Befehl. Warum nicht einfach benutzen?
Übrigens kann der letzte Teil Ihres Perl-Einzeilers durch die
-l
Option ersetzt werden:Noch ein Hinweis: Normalerweise wird die Pipeline, die Sie in Ihrer Frage anzeigen, wie folgt geschrieben:
oder, wenn
cat
Platzhalter dargestellt werden, sollten Dummy-Namen verwendet werden:dann werden Sie keine Leute haben, die sich über nutzlose Verwendungen von beschweren
cat
.quelle
Normalerweise benutze ich nur printf ...
while read x;do printf '%d\n' $x;done <file
quelle
wcalc sollte zuerst installiert werden
quelle
Nur Python funktionierte für mich für längere Hex-Werte wie:
Befehl:
Ergebnis:
quelle