2016-07-29 39 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

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

相關問題