首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

awk怎么实现16进制相加

2012-03-26 
awk如何实现16进制相加?比如一个文件a.txt有如下数据:0x1234 0x5678 0x99990x2345 0x7890 0x8888......将

awk如何实现16进制相加?
比如一个文件a.txt有如下数据:
0x1234 0x5678 0x9999
0x2345 0x7890 0x8888
......
将第一列与第二列16进制相加,和第三列一起,得到一个新文件。

[解决办法]
搞错了。忽略前面粘贴的,以这个为准。

基本用shell实现的,保存为xxx.sh,以a.txt为参数。
结果保存在result.txt文件里

BatchFile code
#!/bin/sh                                                                                                                          rm -rf ./result.txt                                                                                                                          while read linedo        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.txtdone < $1
[解决办法]
如果你都是十六进制的数据,可以考虑用--non-decimal-data选项,代码如下:
C/C++ code
cat a.txt | awk --non-decimal-data  '{sum=($1 + $2); printf("0x%x %s\n", sum,$3)}' > newfile.txt 

热点排行
Bad Request.