Groovy текстовый файл разбора

У меня есть файл журнала, который я хотел бы проанализировать, и у меня возникли некоторые проблемы. Сначала казалось, что это будет просто. Я пойду дальше и опубликую источник, который придумаю, а затем объясню, что я пытаюсь сделать.

Файл, который я пытаюсь проанализировать, содержит следующие данные:

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

Мой исходный код (ниже) в основном разбивает файл на строку, а затем разбивает строку на две части (ключ: значение).

Источник:

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
}

Проблема с моим источником состоит в том, что когда я использую мои методы получения (такие как $ dataList.Performance), он показывает только последний в файле, а не два.

Поэтому мне интересно, как мне разобрать файл, чтобы он хранил информацию для обоих жестких дисков? Есть ли способ упаковать информацию в «объект жесткого диска»?

Любая помощь приветствуется

Несколько примечаний:

Файл находится на компьютере с ОС Windows (хотя информация берется из системы nix)

Текстовый файл разделен табуляцией, двоеточием и пробелом (как показано в моем исходном коде), просто подумал, что я бы сказал, потому что на этой странице это не так.

Ответы на вопрос(2)

Ваш ответ на вопрос