免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3292 | 回复: 4
打印 上一主题 下一主题

[文本处理] shell如何处理16进制值累计 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-27 15:34 |显示全部楼层 |倒序浏览
有类似这样一个xml

<?xml version="1.0"?>
<test>
<Number>1000</Number>
<Start>00E011223300</Start>
<Tag ID="aaa"><CRC>916ea803</CRC></Tag>
<Tag ID="ert"><CRC>213727c7</CRC></Tag>
<Tag ID="asd"><CRC>213727c7</CRC></Tag>
</test>

提取里面的ID 生成下面这样的格式:

aaa 00E011223300
ert 00E011223301
asd 00E011223302
......


每个提取ID我会了,现在就是如何处理那个16进制的Start值累加,同时附在后面?

论坛徽章:
0
2 [报告]
发表于 2014-01-27 15:53 |显示全部楼层
嗯,我想了下和xml无关了

给一个16进制值,如:00E011223300
在文本每一行后面附加它的累计

asdasdasd
adadadasd
12121sada
asdasdad1
121212121

出来这样的:

asdasdasd 00E011223300
adadadasd 00E011223301
12121sada 00E011223302
asdasdad1 00E011223303
121212121 00E011223304

不知道怎么弄,感觉用awk或sed可以的

论坛徽章:
0
3 [报告]
发表于 2014-01-27 16:09 |显示全部楼层
  1. test$ awk -v s=00E0 '{print $0 FS s++}' test1.txt
  2. asdasdasd 0
  3. adadadasd 1
  4. 12121sada 2
  5. asdasdad1 3
  6. 121212121 4
  7. asdasdasd 5
  8. adadadasd 6
  9. 12121sada 7
  10. asdasdad1 8
  11. 121212121 9
  12. asdasdasd 10
  13. adadadasd 11
  14. 12121sada 12
  15. asdasdad1 13
  16. 121212121 14
复制代码

论坛徽章:
0
4 [报告]
发表于 2014-01-27 16:10 |显示全部楼层
我出来是这种结果,我想要的是16进制的表示和累计
00E0
00E1
00E2

论坛徽章:
0
5 [报告]
发表于 2014-01-28 15:26 |显示全部楼层
回复 9# ly5066113

谢谢阿,我再学习下


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP