日期:2014-05-16 浏览次数:21085 次
#!/bin/sh
                                                                                                                          
rm -rf ./result.txt
                                                                                                                          
while read line
do
        i1=`echo  $line | awk '{print $1} '`
        i2=`echo  $line | awk '{print $2} '`
        i3=`echo  $line | awk '{print $3} '`
        i1_dec=`echo $(($i1))`  # convert to decimal
        i2_dec=`echo $(($i2))`  # convert to decimal
        sum=`expr $i1_dec + $i2_dec`
        echo $sum
        out_string=`printf "0x%x\t%s" $sum $i3`
        echo $out_string >> result.txt
done < $1
------解决方案--------------------
如果你都是十六进制的数据,可以考虑用--non-decimal-data选项,代码如下:
cat a.txt | awk --non-decimal-data  '{sum=($1 + $2); printf("0x%x %s\n", sum,$3)}' > newfile.txt