如何在Groovy中存储数组中文件的特定行?

时间:2016-02-26 07:39:09

标签: jenkins groovy

我感兴趣的是,如果有一种简单的方法可以将文件中的特定行存储到Groovy中的数组中(我需要在Jenkins中使用GroovyAxis)。该文件看起来像这样:

fields

我需要将var3中的test1 test2 test3等存储在一个数组中。现在我用这个:

var1="value1 value2 etc"

var2="a b etc"

var3="test1 test2 test3 etc"

但是它将我拥有的每一行存储到一个数组中,因此我必须大量解决配置文件才能完成工作。

非常感谢

3 个答案:

答案 0 :(得分:0)

你非常接近!

def words = [:]
new File( '/home/workstation/jenkins/params' ).eachLine { line ->
    (var, value) = line.split('=')
    words << [(var): value.split(' ')]
}

结果是数组的映射。键是变量名,值是数组。

更新

哦,它是属性文件......

Properties properties = new Properties() 
File propertiesFile = new.    File('/home/workstation/jenkins/params') 
propertiesFile.withInputStream { properties.load(it) } 
def result = properties.var3.split(' ').collect { item.minus('"') }
return result

答案 1 :(得分:0)

ConfigSlurper可用于加载属性/配置:

def config = new ConfigSlurper(new File("my.conf").toURL())
assert config.var2 == "a b etc"

答案 2 :(得分:0)

enter image description here

//cat /tmp/words.txt
//It's must be file Format
//SOME_DETAILS:1234-A0;1456-B1;2456-B0;3436-D0;4467-C0

stage("test"){

    def testArray=[]
    new File('/tmp/words.txt').splitEachLine("[:;]"){line->
        if(line[0]=='SOME_DETAILS')testArray=line[1..-1]
    }
    println testArray
}

enter image description here

运行后输出,您得到 enter image description here