- 论坛徽章:
- 39
|
本帖最后由 关阴月飞 于 2015-08-26 13:05 编辑
回复 3# xinxue123456
这里主要算时间麻烦,要转化成ms 然后相减,再转化回来
1.时间运算: 将时间转化成ms, 然后相减,再转化回原来的格式- awk 'BEGIN{split("1:1000:60000",a,":")}NR>1{n=split($1,b,":|\\.");for(i=n;i;i--)d+=b[i]*a[n-i+1];print $0,int((d-c)/60000)":"int((d-c)%60000/1000)"."int((d-c)%60000%1000;c=d=0}{n=split($1,b,":|\\.");for(i=n;i;i--)c+=b[i]*a[n-i+1]}NR==1' urfile
- 30:42.414 55c8fb7d 3f795cae 11a5c63c
- 30:42.418 55c8fb7f 3f795efc 11a5c63c 0:0.4
- 30:42.426 55c8fb82 3f796168 11a5c664 0:0.8
- 30:57.455 55c8fb85 3f7963f2 11a5c66e 0:15.29
- 30:57.459 55c8fb89 3f7966fe 11a5c664 0:0.4
- 31:21.786 55c8fbc8 3f796a50 11a5c5a6 0:24.327
- 31:24.900 55c8fbcb 3f796d02 11a5c6e6 0:3.114
- 31:24.904 55c8fbce 3f79713a 11a5cc36 0:0.4
- 32:04.747 55c8fbd1 3f797270 11a5d456 0:39.843
复制代码 2.经纬度运算: 将需要运算的16进制数统一加上 0x 前缀,使用 awk --non-decimal-data 选项后便可直接相减,得到差值后,再使用printf 进行格式化- awk --non-decimal-data 'NR>1{printf $0" ";for(i=2;i<=NF;i++){b[i]="0x"$i;printf "%08X ",b[i]-a[i]};print c}{for(i=2;i<=NF;i++)a[i]="0x"$i}NR==1' urfile
- 30:42.414 55c8fb7d 3f795cae 11a5c63c
- 30:42.418 55c8fb7f 3f795efc 11a5c63c 00000002 0000024E 00000000
- 30:42.426 55c8fb82 3f796168 11a5c664 00000003 0000026C 00000028
- 30:57.455 55c8fb85 3f7963f2 11a5c66e 00000003 0000028A 0000000A
- 30:57.459 55c8fb89 3f7966fe 11a5c664 00000004 0000030C FFFFFFFFFFFFFFF6
- 31:21.786 55c8fbc8 3f796a50 11a5c5a6 0000003F 00000352 FFFFFFFFFFFFFF42
- 31:24.900 55c8fbcb 3f796d02 11a5c6e6 00000003 000002B2 00000140
- 31:24.904 55c8fbce 3f79713a 11a5cc36 00000003 00000438 00000550
- 32:04.747 55c8fbd1 3f797270 11a5d456 00000003 00000136 00000820
复制代码 3.合并: 将上面两个步骤合并成一条命令- awk --non-decimal-data 'BEGIN{split("1:1000:60000",a,":")} NR>1{n=split($1,b,":|\\.");for(i=n;i;i--)d+=b[i]*a[n-i+1];printf "%s\t%s\t",$0,int((d-c)/60000)":"int((d-c)%60000/1000)"."int((d-c)%60000%1000);c=d=0;for(i=2;i<=NF;i++){e[i]="0x"$i;printf "%08X\t",e[i]-f[i]};print ""}{n=split($1,b,":|\\.");for(i=n;i;i--)c+=b[i]*a[n-i+1];for(i=2;i<=NF;i++)f[i]="0x"$i}NR==1' urfile
- 30:42.414 55c8fb7d 3f795cae 11a5c63c
- 30:42.418 55c8fb7f 3f795efc 11a5c63c 0:0.4 00000002 0000024E 00000000
- 30:42.426 55c8fb82 3f796168 11a5c664 0:0.8 00000003 0000026C 00000028
- 30:57.455 55c8fb85 3f7963f2 11a5c66e 0:15.29 00000003 0000028A 0000000A
- 30:57.459 55c8fb89 3f7966fe 11a5c664 0:0.4 00000004 0000030C FFFFFFFFFFFFFFF6
- 31:21.786 55c8fbc8 3f796a50 11a5c5a6 0:24.327 0000003F 00000352 FFFFFFFFFFFFFF42
- 31:24.900 55c8fbcb 3f796d02 11a5c6e6 0:3.114 00000003 000002B2 00000140
- 31:24.904 55c8fbce 3f79713a 11a5cc36 0:0.4 00000003 00000438 00000550
- 32:04.747 55c8fbd1 3f797270 11a5d456 0:39.843 00000003 00000136 00000820
复制代码 |
|