awk如何实现16进制相加?
来源: 互联网 发布时间:2016-05-12
本文导语: 比如一个文件a.txt有如下数据: 0x1234 0x5678 0x9999 0x2345 0x7890 0x8888 ...... 将第一列与第二列16进制相加,和第三列一起,得到一个新文件。 | 如果你都是十六进制的数据,可以考虑用--non-decimal-...
比如一个文件a.txt有如下数据:
0x1234 0x5678 0x9999
0x2345 0x7890 0x8888
......
将第一列与第二列16进制相加,和第三列一起,得到一个新文件。
0x1234 0x5678 0x9999
0x2345 0x7890 0x8888
......
将第一列与第二列16进制相加,和第三列一起,得到一个新文件。
|
如果你都是十六进制的数据,可以考虑用--non-decimal-data选项,代码如下:
newfile.txt就是你要的文件!
good luck!
cat a.txt | awk --non-decimal-data '{sum=($1 + $2); printf("0x%x %sn", sum,$3)}' > newfile.txt
newfile.txt就是你要的文件!
good luck!
|
搞错了。忽略前面粘贴的,以这个为准。
基本用shell实现的,保存为xxx.sh,以a.txt为参数。
结果保存在result.txt文件里
[code=BatchFile]
#!/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%xt%s" $sum $i3`
echo $out_string >> result.txt
done
基本用shell实现的,保存为xxx.sh,以a.txt为参数。
结果保存在result.txt文件里
[code=BatchFile]
#!/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%xt%s" $sum $i3`
echo $out_string >> result.txt
done