Hex to decimal - Execute command for the matching part


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Hex to decimal - Execute command for the matching part
# 1  
Old 11-17-2010
Hex to decimal - Execute command for the matching part

Alo

I have this input:
Code:
0x10=some text
0x20=some text
0x30=some text

and want this output:
Code:
16=some text
32=some text
48=some text

I want to use a command to convert from hex to decimal i.e.:
Code:
 $ echo $((0x15a))

or
Code:
 $ printf '%d\n' 0x15a

I try to use something like this:
Code:
sed 's/^.\{4\}/'"`echo $((&))`"'/' inputfile

but get this error:
&: syntax error: operand expected (error token is "&")

How can I execute a command for the matching part?

Thx in advance
# 2  
Old 11-17-2010
Code:
sed 's/0x//' input | { IFS="=" ; while read a b
do
      n=`echo "obase=10;ibase=16;$a"|bc`
      echo "$n=$b"
done }

Code:
$ cat input
0x10=some text
0x20=some text 
0x30=some text
$ cat mts
sed 's/0x//' input | { IFS="=" ; while read a b
do
      n=`echo "obase=10;ibase=16;$a"|bc`
      echo "$n=$b"
done }
$ ksh mts
16=some text
32=some text
48=some text
$


Last edited by ctsgnb; 11-17-2010 at 04:28 PM..
# 3  
Old 11-17-2010
Quote:
Originally Posted by chitech
I want to use a command to convert from hex to decimal i.e.:
Code:
 $ echo $((0x15a))

or
Code:
 $ printf '%d\n' 0x15a

I don't think you can embed statements inside a regex like that. sed doesn't evaluate shell statements. And you don't need sed at all anyway, you already know the shell can translate...

How about:
Code:
while IFS="=" read HEX TEXT
do
        echo "$((${HEX}))=${TEXT}"
done < input > output


Last edited by Corona688; 11-17-2010 at 04:34 PM.. Reason: IFS in wrong place
# 4  
Old 11-17-2010
Thx for both answers

Quote:
I don't think you can embed statements inside a regex like that. sed doesn't evaluate shell statements.
I can execute this:
Code:
 sed 's/^.\{4\}/'"`date`"'/' inputfile

and get this result:
Code:
Wed Nov 17 22:21:40 CET 2010=some text
Wed Nov 17 22:21:40 CET 2010=some text
Wed Nov 17 22:21:40 CET 2010=some text

The problem is that I can't pass the matching part to the shell statement

Last edited by chitech; 11-17-2010 at 05:14 PM..
# 5  
Old 11-17-2010
No need to call an external utility such as sed. It can all be very easily done within the shell.
Code:
while IFS="=" read hex rest
do
    printf "%d=%s\n" hex rest
done < infile

Corona is correct. sed doesn't evaluate shell statements.
Code:
 sed 's/^.\{4\}/'"`date`"'/' inputfile

It is the shell that expands the above to this expression before calling the sed utility
Code:
sed 's/^.\{4\}/'"Wed Nov 17 22:21:40 CET 2010"'/' inputfile


Last edited by fpmurphy; 11-17-2010 at 07:53 PM..
# 6  
Old 11-18-2010
Or you could use Perl -

Code:
$
$
$ cat f40
0x10=some text
0x20=some text
0x30=some text
$
$
$ perl -ne '/^(.*?)(=.*)$/ && printf("%s%s\n",hex($1),$2)' f40
16=some text
32=some text
48=some text
$
$

tyler_durden
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Converting decimal to hex

How to convert decimal value to hex and than take 1st digits as variable sample data 84844294,5,6 51291736,2,3 84844294,5,6 51291736,2,3 i can use {printf "%x,%d\n",$1,$2} but than i want to filter base on 1st hex digit 1st recrd (1 Reply)
Discussion started by: before4
1 Replies

2. Shell Programming and Scripting

How to convert a file containing hex code to decimal using script?

The file contains code like the below and need to convert each one into a decimal 00 00 00 04 17 03 06 01 So the output should come as 0 0 0 4 23 3 6 1 (24 Replies)
Discussion started by: necro98
24 Replies

3. Shell Programming and Scripting

Convert hex to decimal

can someone help me in converting hex streams to decimal values using perl script Hex value: $my_hex_stream="0c07ac14001676"; Every hex value in the above stream should be converted in to decimal and separated by comma. The output should be: 12,07,172,20,00,22,118 (2 Replies)
Discussion started by: Arun_Linux
2 Replies

4. UNIX for Advanced & Expert Users

Convert 32 bit hex value into fields in decimal

I have 32 bit value in hex that I want to separate into fields and then convert the fields into decimal values. Input file has 2 words of 32 bit hex values: 000001ac ca85210e Output both words separated into individual bit fields: ca85210e: f1(31:9), f2(8:0) f7c392ac: f1(31:14),... (2 Replies)
Discussion started by: morrbie
2 Replies

5. Shell Programming and Scripting

Converting hex to ascii/decimal

I am writing a bash script to do some parsing on a log and I am running into a problem when it comes to converting only certain sections of the file from hex to ascii or hex to decimal. Data Example: The hex values after Hardware and SW Version I need to convert from Hex to ASCII and the... (16 Replies)
Discussion started by: Shiftkey
16 Replies

6. Shell Programming and Scripting

Decimal to hex conversion

Dear All PROs Thanks in advance need a shell for Decimal to hex conversion input file (decimal values) 65,5,48,66,133,131,118,47 65,5,48,66,133,131,83,63 . . desire output should be (Hex value)... (11 Replies)
Discussion started by: The_Archer
11 Replies

7. Shell Programming and Scripting

Convert hex to decimal or reverse is better?

Please Help Me! about the problem down under. I have 2 files with nearly the same characteristics, I have to convert one to the other format or the other format to one's format. I want to write it with awk. The first file contain lines like this: 300000001#A#Y#Y#Y#Y The other file contain... (4 Replies)
Discussion started by: Axel82
4 Replies

8. Shell Programming and Scripting

How to convert hex numbers to decimal ?

Hi, please tell me how to convert hex number to decimal 000000E7 000000000002640D 0000000000025B16 and seconds to minutes, hours, days, months, years bytes to kbytes, mbytes , gbytes read the following examples while read a b do printf "%5d %5d\n" "0x$a" "0x$b" done < "$FILE"... (15 Replies)
Discussion started by: jack2
15 Replies

9. Shell Programming and Scripting

hex to decimal

hi all, echo "ibase=16;obase=10;11" | bc shouldn't i get 17? i am getting 11 i am trying to convert 11 (hex) to decimal stuck! JAK (4 Replies)
Discussion started by: jakSun8
4 Replies

10. Shell Programming and Scripting

Hex to Decimal Convertion

Dear all, I have a file like this. EE48 4473 7FC9 EE48 102C D23 EE48 4DD 27D EE48 0 0 EE48 3FFE 854 F230 DC6 ... (1 Reply)
Discussion started by: Nayanajith
1 Replies
Login or Register to Ask a Question