2014-04-15 145 views
-1

從鍵值文件的統計數據我有內容的文件獲取紅寶石

Test_CG: 
    Copy stats: 
     Test_CG: 
     SAN traffic: 
      Current throughput: 22832 bps 
      Average throughput: 1 Mbps 
      Current write IOPS: 1 
      Average write IOPS: 4 

     Test_CG_DR: 
     Journal: 
      Usage: 477.13MB 
      Total: 2.45GB 
      Latest image: Fri Apr 11 11:03:04.561405 2014 
      Current image: Fri Apr 11 11:03:04.561405 2014 
      Journal lag: 130.18MB 
      Protection window:N/A 
      Average journal compression ratio:N/A 
      Mode: Normal 
    Link stats: 
     Test_CG -> Test_CG_DR: 
     Init: 
      SAN traffic: 134 Mbps 
      WAN traffic: 79 Mbps 
      Progress: 80.68% 
     Replication: 
      Lag: 
      Time: 30 sec 
      Data: 52.57MB 
      Writes: 886 
      WAN traffic: 13 Mbps 
      Current bandwidth reduction ratio: 1.08711 
      Average bandwidth reduction ratio: 1.09669 
      Current deduplication ratio:N/A 
      Average deduplication ratio:N/A 

我想從兩個部分獲取廣域網流量數據,鏈接統計和複製

我有它使用紅寶石處理大量的文本處理,但我認爲它必須被構造,

我可以使用JSON或YAML與紅寶石做些什麼?

其實任何技術都會有所幫助。

問候,

一個

+0

這不會解析爲YAML。您在「N/A」之前需要一個空格。你有控制什麼產生這個文件,或者你堅持原來的文件? – akatakritos

+0

我被困在檔案 – user3536147

+0

雖然 – user3536147

回答

0

如果要分析它作爲YAML你必須修正格式:N/A之前應該有一個空間。如果這是一致的格式故障,你可以用gsub來做到這一點。

require 'yaml' 
file_contents = load_my_file() 
cleaned_yaml = file_contents.gsub(/:N\/A/, ': N/A') 
hash = YAML.load(cleaned_yaml) 

hash['Test_CG']['Link stats']['Test_CG -> Test_CG_DR']['Init']['WAN traffic'] 
# => "79 Mbps" 
hash['Test_CG']['Link stats']['Test_CG -> Test_CG_DR']['Replication']['WAN traffic'] 
# => "13 Mbps" 

這適用於提供的示例。

當您使用真實數據運行時,您的里程可能會有所不同。

+0

這真是太神奇了,你給出的是確切的東西 – user3536147

+0

嗨,我不能非常感謝你這個。只知道YAML,也對我很害怕的哈希有了一些想法。現在我的腳本已經完成並且正在運行。非常感謝 – user3536147