ubuntuusers.de

Umwandlung hex in dez in mehrspaltiger Textdatei

Status: Gelöst | Ubuntu-Version: Ubuntu GNOME 14.04 (Trusty Tahr)
Antworten |

Alpha2

Anmeldungsdatum:
12. Oktober 2013

Beiträge: 26

Hallo Leute,

ich habe eine Textdatei mit vier Spalten, drei davon bestehen aus Hexadezimalzahlen, die in dezimale umgewandelt werden müssen. Mit bc geht das ganz gut, allerdings funktioniert es nur, wenn es wirklich nur eine Zahl bekommt. Ich kann also nicht schreiben:

cat datei.txt | awk ... | bc

sondern muss die Datei in ihre vier Spalten zerhacken, diese alle einzeln umformen und danach mit paste wieder zusammenfügen.

Das geht doch garantiert einfacher! Ich weiß bloß nicht wie... Wenn ich mir mit mapfile z < datei.txt ein Array erstelle ist das ja auch bloß einspaltig und ich habe nichts gekonnt. Ist es vielleicht möglich die Textdatei innerhalb der bash in eine Matrix umzuwandeln? Dann könnte man recht bequem per Schleife Zahl für Zahl abgehen und umwandeln. Oder gibt es eine andere schlaue Lösung?

Danke für Hilfe! ☺

alpha2

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13210

Alpha2 schrieb:

cat datei.txt | awk ... | bc

Das gibt schon mal einen useless use of cat award. ☺

sondern muss die Datei in ihre vier Spalten zerhacken, diese alle einzeln umformen und danach mit paste wieder zusammenfügen.

Nö.

Das geht doch garantiert einfacher! Ich weiß bloß nicht wie...

awk kann auch hex nach dezimal umrechnen:

1
2
$ echo 0x10 | awk '{ printf "%s -> %d\n", $1, $1 }'
0x10 -> 16

Oder gibt es eine andere schlaue Lösung?

s.o.

Alpha2

(Themenstarter)

Anmeldungsdatum:
12. Oktober 2013

Beiträge: 26

Spitze, Danke! Funktioniert ☺ .

Ich muss nur aufpassen 0x an der richtigen Stelle einzufügen:

1
awk '{printf"%s %d %d %d\n",$1,"0x"$2,"0x"$3,"0x"$4}' < Datei.txt

👍

Antworten |