![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Covert Channels Evaluation Framework 0.1 (Default branch) | iBot | Software Releases - RSS News | 0 | 05-21-2008 05:40 PM |
| Covert rows into one line data | vj_76 | Shell Programming and Scripting | 8 | 06-14-2005 04:50 AM |
| Covert case of first letter only | tisons | Shell Programming and Scripting | 1 | 01-28-2005 03:13 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
Covert Deci to Hex (New to AWK)
Hi, I am very new to awk and would be grateful for your help.
I need to convert a file with details like this, Wregister( 45676, 0) Wregister( 55550, 1) Wregister( 44000, 0) FlipFlop( 2342, 2) . . to look like this Wregister(626C, 0) Wregister(D8FE, 1) Wregister(ABE0, 0) FlipFlop( 2342, 2) -----> unchanged,name doesn't start with "Wregister(" . . It converts $2 in deci into hex, and then combines the previous $1 and $2 together. The (,) at the end of the numbers is a problematic one for me. It needs to be retained too. Please help me. |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
Code:
$ more file
Wregister( 45676, 0)
Wregister( 55550, 1)
Wregister( 44000, 0)
FlipFlop( 2342, 2)
$ more file.sh
#!/bin/sh
while read line; do
echo "$line" | grep "^Wreg" >/dev/null 2>&1
if [ "$?" -eq "0" ]; then
val=`echo "$line" | sed 's/^Wregister*([ ]*\([0-9]*\),.*$/\1/'`
hex=`echo "obase=16;ibase=10; $val" | bc`
echo "$line" | sed "s/$val/$hex/"
else
echo "$line"
fi
done < file
exit 0
$ chmod +x ./file.sh
$ ./file.sh > newfile
$ more newfile
Wregister( B26C, 0)
Wregister( D8FE, 1)
Wregister( ABE0, 0)
FlipFlop( 2342, 2)
ZB |
|
#3
|
|||
|
|||
|
Hi ZB,
Thanks very much for the help. I realised that you are using "sed" command, but can i do it in awk? and I am running the prog in UNIX. |
|
#4
|
||||
|
||||
|
This is run under "UNIX".
Also; you no doubt could solve this using awk, but why bother if it's already solved using the shell, bc and sed? Cheers ZB |
|
#5
|
||||
|
||||
|
Quote:
linda.awk: Code:
BEGIN {
FS="[(,]"
OFS=","
}
$1 == "Wregister" {
$1 = sprintf("%s(%X", $1, $2)
$2=$3; NF--
}
1
|
|
#6
|
|||
|
|||
|
Hi vgersh99,
Thks for the help. I finally applied it succesfully today. But, here comes another seperate but related problem. This time, I tried to convert from a Hex to Deci number by creating a new script with "%d" on the hex number, but it failed. I need to convert a file with these, ABC c001 DEF ABC c050 EFG ABC c802 GHI to ABC 49153 DEF ABC 49232 EFG ABC 51202 GHI Please help me again. Thank you!! |
|
#7
|
||||
|
||||
|
Quote:
linda.awk: Code:
BEGIN {
for (i = 0; i < 10; i++)
hex[i] = i
hex["a"] = hex["A"] = 10
hex["b"] = hex["B"] = 11
hex["c"] = hex["C"] = 12
hex["D"] = hex["d"] = 13
hex["e"] = hex["E"] = 14
hex["f"] = hex["F"] = 15
}
function dehex(h, i,x) {
for (i = 1; i <= length(h); i++)
x = x*16 + hex[substr(h, i, 1)]
return x
}
{
$2 = dehex($2)
print
}
|
||||
| Google The UNIX and Linux Forums |