Arquivo de texto de análise Groovy
Eu tenho um log de arquivo que gostaria de analisar e estou tendo alguns problemas. A princípio, parecia que seria simples. Vou seguir em frente e postar a fonte que criei e depois explicar o que estou tentando fazer.
O arquivo que estou tentando analisar contém esses dados:
HDD Device 0 : /dev/sda
HDD Model ID : ST3160815A
HDD Serial No : 5RA020QY
HDD Revision : 3.AAA
HDD Size : 152628 MB
Interface : IDE/ATA
Temperature : 33 C
Health : 100%
Performance : 70%
Power on Time : 27 days, 13 hours
Est. Lifetime : more than 1000 days
HDD Device 1 : /dev/sdb
HDD Model ID : TOSHIBA MK1237GSX
HDD Serial No : 97LVF9MHS
HDD Revision : DL130M
HDD Size : 114473 MB
Interface : S-ATA
Temperature : 30 C
Health : 100%
Performance : 100%
Power on Time : 38 days, 11 hours
Est. Lifetime : more than 1000 days
Meu código fonte (abaixo) basicamente divide o arquivo linha por linha e depois divide a linha em duas (chave: valor).
Fonte:
def dataList = [:]
def theInfoName = "C:\\testdata.txt"
File theInfoFile = new File(theInfoName)
def words
def key
def value
if (!theInfoFile.exists()) {
println "File does not exist"
} else {
theInfoFile.eachLine { line ->
if (line.trim().size() == 0) {
return null
} else {
words = line.split("\t: ")
key=words[0]
value=words[1]
dataList[key]=value
println "${words[0]}=${words[1]}"
}
}
println "$dataList.Performance" //test if Performance has over-written the previous Performance value
}
O problema com minha fonte é que, quando eu uso meus getters (como $ dataList.Performance), ele mostra apenas o último no arquivo em vez de dois.
Então, eu estou me perguntando, como eu analiso o arquivo para que ele mantenha as informações dos dois discos rígidos? Existe uma maneira de compactar as informações em um 'objeto de disco rígido'?
toda e qualquer ajuda é apreciada
Algumas notas laterais:
O arquivo está em uma máquina Windows (mesmo que as informações sejam obtidas de um sistema nix)
O arquivo de texto é dividido por uma guia, dois-pontos e espaço (como mostrado no meu código-fonte), apenas pensei em afirmar isso porque não é assim nesta página.