Regex 如何在两个已知字符串之间提取值
我有一些包含混合二进制和xml数据的大型文件。我想提取文件中多次出现的两个XML标记之间的所有值。模式如下:Regex 如何在两个已知字符串之间提取值,regex,xml,search,sed,extract,Regex,Xml,Search,Sed,Extract,我有一些包含混合二进制和xml数据的大型文件。我想提取文件中多次出现的两个XML标记之间的所有值。模式如下:050随机值。XML数据的一部分没有格式化,所有内容都在一行中 我需要中和之间的所有值,其中值介于050和999之间(也存在于其他字段下,但我只需要C99中的F1值)。我需要数一数,看看有多少C99的F1值在050到999之间 我想要一个提示,告诉我如何轻松地获取和提取这些值(使用cat和grep?或sed?)。一旦将值导出到文件中,排序和计数就很容易了 我的临时解决办法: 从文件中删除所
050随机值
。XML数据的一部分没有格式化,所有内容都在一行中
我需要
中
和
之间的所有值,其中值介于050和999之间(
也存在于其他字段下,但我只需要C99中的F1值)。我需要数一数,看看有多少C99的F1值在050到999之间
我想要一个提示,告诉我如何轻松地获取和提取这些值(使用cat和grep?或sed?)。一旦将值导出到文件中,排序和计数就很容易了
我的临时解决办法:
从文件中删除所有二进制数据后,我可以运行以下命令:
cat filename | grep -o "<C99><F1>......." > file.txt
cat文件名| grep-o“…”>file.txt
这将从所有以开头的字符串中导出前12个字符
001
056
123
445
在文本文件中导出后,我将用零替换
,然后对剩余值进行排序和计数
谢谢大家! 使用:
$xml sel-t-v'//C99/F1[.>=50和。这可能会带来太多的反对票,除非你至少付出一些努力并试图解决你自己的问题。使用XML解析是行不通的,因为有些数据是二进制格式的,我根本不需要。我很不好意思发布我的解决方案,但你现在可以看到了。非常好的工具,我不知道它
<C99><F1>001
<C99><F1>056
<C99><F1>123
<C99><F1>445
$ xml sel -t -v '//C99/F1[. >= 50 and . <= 999]' -nl data.xml | wc -l