пятница, 13 мая 2011 г.

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



Недавно на работе в рамках написания функциональных тестов на шедулеры встретилась такая задача.Есть CSV-файл с (тестовой) информацией о заказах, в нем две колонки, в первой дата, во второй - число, представляющее quantity на эту дату. 

Требуется - получить CSV файл, в котором все значения во второй колонке умножены на 3 (4, 5, какой-то множитель). Следующий скрипт на Groovy решает эту задачу (думаю, его можно еще сократить и причесать, но все же выложу как есть).

def path = "source.csv"
def pathNew = "target.csv"

def oldFile = new File(path)
def newFile = new File(pathNew)
newFile.withWriter { out ->
  oldFile.eachLine { line ->
    out << line.replaceAll(/,(\d)*/, {x, y -> ',' + (x[1..(x.size()-1)].toInteger() * 3).toString()} ) << '\n'
  }
}




1 комментарий: