【发布时间】:2016-12-04 08:00:30
【问题描述】:
我有一些包含混合二进制和 xml 数据的大文件。我想提取文件中多次出现的 2 个 XML 标记之间的所有值。模式如下:<C99><F1>050</F1><F2>random value</F2></C99>。部分 XML 数据未格式化,所有内容都在一行中。
我需要来自<C99> 的<F1> 和</F1> 之间的所有值,其中值介于050 和999 之间(<F1> 也存在于其他字段下,但我只需要来自 C99 的 F1 值)。我需要数一数,看看有多少 C99 的 F1 值在 050 到 999 之间。
我想知道如何轻松获取和提取这些值(使用 cat 和 grep?或 sed?)。将值导出到文件中后,排序和计数就很容易了。
我的临时解决方案:
从文件中删除所有二进制数据后,我可以运行以下命令:
cat filename | grep -o "<C99><F1>......." > file.txt
这将从<C99><F1>.开头的所有字符串中导出前12个字符
<C99><F1>001
<C99><F1>056
<C99><F1>123
<C99><F1>445
.....
在文本文件中导出后,我将<C99><F1> 替换为空,然后对剩余值进行排序和计数。
谢谢!
【问题讨论】:
-
这可能会带来太多的反对票,除非您至少付出一些努力并尝试解决自己的问题
-
它无法使用 XML Parse,因为我不需要它的一些二进制格式的数据。
-
我不好意思发布我的解决方案,但你现在可以看到了。
标签: regex xml search sed extract