2016-07-29 59 views
-1

我有一些包含混合二进制和xml数据的大文件。我想提取在文件中有多个事件的2个XML标签之间的所有值。模式如下:<C99><F1>050</F1><F2>random value</F2></C99>。部分XML数据没有格式化,所有内容都在一行中。如何提取2个已知字符串之间的值

我需要<F1></F1>之间的所有值从<C99>其中值范围050和999(<F1>下等领域中也存在,但我需要从C99 F1的唯一值)之间。我需要对它们进行计数,看看有多少C99的F1值在0到999之间。

我想要一个提示,我可以如何轻松获取并提取这些值(使用cat和grep?或sed?)。一旦将值导出到文件中,排序和计数就很容易完成。

我的临时解决方案:

从文件中删除所有的二进制数据后,我可以运行下面的命令:

cat filename | grep -o "<C99><F1>......." > file.txt 

这将导出所有字符串第12个字符开始<C99><F1>.

<C99><F1>001 
<C99><F1>056 
<C99><F1>123 
<C99><F1>445 

.....

一旦以文本文件形式导出,我将其替换为<C99><F1>,然后对剩余值进行排序和计数。

谢谢!

+0

这可能会带来太多的downvotes,除非你显示至少一些努力和尝试解决你自己的问题 –

+0

使用任何XMLParser的 –

+0

它不会使用XML解析工作,因为在二进制格式的一些数据,我不无论如何需要它。 – spiderpc

回答

2

使用XMLStarlet

$ xml sel -t -v '//C99/F1[. >= 50 and . <= 999]' -nl data.xml | wc -l 

没有太大的暗示存在的,对不起。

+0

非常漂亮的工具,不知道它 –

相关问题