Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在两个已知字符串之间提取值_Regex_Xml_Search_Sed_Extract - Fatal编程技术网

Regex 如何在两个已知字符串之间提取值

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?)。一旦将值导出到文件中,排序和计数就很容易了 我的临时解决办法: 从文件中删除所

我有一些包含混合二进制和xml数据的大型文件。我想提取文件中多次出现的两个XML标记之间的所有值。模式如下:
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