2013-10-20 72 views
1

編輯以澄清解析配置文件,並轉換成數組嵌套哈希

我「已經」做了一些搜索(以上我可以指望)對谷歌的,顯然我是不正確的關鍵詞搜索。我發現了很多網站(rubyforum,個人網站,stackoverflow等),其中沒有一個真正解決了我的特殊問題,而且我都無法適應這些問題。

解析有部分和子部分配置文件。也就是說,這是我從設備中提取的文件,而不是我可以創建的文件。我想創建該配置的哈希,其中包含可以快速訪問某個鍵或子鍵的小節和小節,以便如果我知道給定MAC的索引,則可以快速將其狀態設置爲禁用,而不必遍歷字符串或陣列版本的配置查找MAC和跟蹤索引。

配置文件內容(部分)我想從中轉換:即我將讀取文件並轉換爲散列。

aaa.1.br.devname=br0 
aaa.1.devname=ath0 
bridge.1.devname=br0 
wireless.1.mac_acl.1.comment=testsm 
wireless.1.mac_acl.1.mac=DC:9F:DB:32:0A:2E 
wireless.1.mac_acl.1.status=enabled 
wireless.1.mac_acl.policy=allow 
wireless.1.mac_acl.status=enabled 

我想將它轉換成什麼:

{ 
:aaa => {:"1" => { 
        :br => {:devname => "br0"}, 
        :devname => "ath0" 
        } 
     }, 
:bridge => {:"1" => {:devname => "br0"}}, 
:wireless => {:"1" => { 
         :mac_acl => { 
             :"1" => {:comment => "testsm", :mac => "DC:9F:DB:32:0A:2E", :status => "enabled"} 
            }, 
         :policy => "allow", 
         :status => "enabled" 
         } 
       } 
} 

'Edgars Jekabsons' 提供了兩種可能的解決方案(謝謝!)。 Configtron將無法工作,因爲我解析的配置中的許多密鑰都是/整數,Configtron不喜歡這樣做。它有點使用.store和.fetch方法,但更新現有的存儲值是一個問題。哈希克斯正是我期待的......太棒了!

對不起,我沒有在我的許多搜索中跑過它,我想要!我確實覺得有人假設我沒有足夠好或者根本沒有足夠的搜索。答案很嚴厲。這應該是一個友好的地方,表現出尊重的程度,最初的假設不會偏向負面。我知道在發佈之前應該做一些研究,並且問題應該清楚。但是,對一個人而言,清楚的並不是另一個人。一個恰當的問題可能是「我不明白你的問題,你能澄清你的意思嗎?」?或「是你正在解析一個你創建的還是正在從另一個源拉取的配置?」,vs你的問題不清楚。我的回答是恭敬的......是什麼不明確?很高興澄清。我再一次認爲「From」這個格式(我已經說過我正在解析一個文件「)...」對於「那種格式(哈希)是不言自明的

沒有試圖成爲一個混蛋這裏還是忘恩負義,但來的人,我覺得這個問題是儘可能不讀的問題,因爲它是我沒有把它明確了一些你。

問候

+1

看樣子有人編輯您的文章(或你做了),有人向下投它。這有點令人困惑。最好給一部分你的解釋,然後用一些代碼來說明,而不是一個長時間混淆的解釋,然後是很多代碼。我想你可能會考慮使用某種現有的系統,如JSON或YAML。 – Beartech

+1

我不是那個低估了這一點的人,但我認爲你需要澄清你的問題才能獲得這方面的幫助。有關構建問題的信息,請參閱幫助部分,以最大限度地獲得答案。 –

+0

是的,沿着..的線。我有這樣的數據<示例數據>,我想這樣編碼:<示例編碼>,並能夠像這樣訪問:<如何訪問數據的示例>。 – Beartech

回答