Mark
Mark

Reputation: 25

sh - modify file using sed or awk and doing hex 2 dec conversion

Here's a input file:

some data1 blah blah blah
some data2 blah blah bllah blah
Result HEX: 1ABC
Name......: Some name 1
-------------------------------------------
some random data1 blah blah blah bl
some random data2 blah blah bl
some random data3 blah blah blah blah bla
some random data4 blah blah blah bla
Result HEX: 2BCD
Name......: Whatever name 2
-------------------------------------------
some random data1 blah blah blah blah
some random data2 blah blah blah blah blah
some random data3 blah blah blah bl
Result HEX: 3CDE
Name......: Some name 3
-------------------------------------------

I need to achieve this:

some data1 blah blah blah
some data2 blah blah bllah blah
Result HEX: 1ABC
Result DEC: 6844
Name......: Some name 1
-------------------------------------------
some random data1 blah blah blah bl
some random data2 blah blah bl
some random data3 blah blah blah blah bla
some random data4 blah blah blah bla
Result HEX: 2BCD
Result DEC: 11213
Name......: Whatever name 2
-------------------------------------------
some random data1 blah blah blah blah
some random data2 blah blah blah blah blah
some random data3 blah blah blah bl
Result HEX: 3CDE
Result DEC: 15582
Name......: Some name 3
-------------------------------------------

So after every line in file matching "Result HEX: ", I have to append a new line with "Result DEC: " with calculated hexadecimal value to decimal. I've got some small embeded linux (busybox based), so I found I can convert hex2dec using this command:

# printf "%d\n" 0x1ABC
6844

Could anybody help?... It's too big chalange for me :( Thanks!

Upvotes: 0

Views: 58

Answers (1)

karakfa
karakfa

Reputation: 67507

gawk to the rescue!

$ gawk --non-decimal-data '1; /HEX/{printf "%s DEC: %d\n", $1,"0x"$3}' file

some data1 blah blah blah
some data2 blah blah bllah blah
Result HEX: 1ABC
Result DEC: 6844
Name......: Some name 1
-------------------------------------------
some random data1 blah blah blah bl
some random data2 blah blah bl
some random data3 blah blah blah blah bla
some random data4 blah blah blah bla
Result HEX: 2BCD
Result DEC: 11213
Name......: Whatever name 2
-------------------------------------------
some random data1 blah blah blah blah
some random data2 blah blah blah blah blah
some random data3 blah blah blah bl
Result HEX: 3CDE
Result DEC: 15582
Name......: Some name 3
-------------------------------------------

you can fine tune matching by replacing pattern with $2=="HEX"

Upvotes: 2

Related Questions