在groovy中,我如何迭代csv文件并为每个“组”调用一个函数,这些“组”在某些列上是不同的值?

zaq34kh6  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(145)

在Groovy中并在Jenkins管道上运行时,我使用Jenkins的readFile函数来读取csv文件。
示例csv:
| 姓名|值1|值2|
| - -|- -|- -|
| 若翰|2个|一百二十二|
| 若翰|2个|012年|
| 伯莎|2个|小行星0021|
| 若翰|三个|20个|
| 菲利浦|三个|小行星12022|
| 伯莎|三个|小行星162021|
| 若翰|三个|小行星2022|
我试图实现的是为列“name”中的每个不同值调用另一个函数。
Groovy脚本流如下所示:

  • 调用函数X(名称,其余值),其中:

| 姓名|值1|值2|
| - -|- -|- -|
| 若翰|2个|一百二十二|
| 若翰|2个|012年|
| 若翰|三个|20个|
| 若翰|三个|小行星2022|

  • 然后调用函数X(name,rest of values),其中:

| 姓名|值1|值2|
| - -|- -|- -|
| 菲利浦|三个|小行星12022|

  • 然后调用函数X(name,rest of values),其中:

| 姓名|值1|值2|
| - -|- -|- -|
| 伯莎|2个|小行星0021|
| 伯莎|三个|小行星162021|

**注意:**顺序(John、Philip、Bertha)并不重要!

我想我可以用闭包来实现这一点,但我不太确定,因为我对这个主题还很陌生

brccelvz

brccelvz1#

这是你要找的东西吗?

def functionX(name,val1,val2) {
    if (name == 'name') return
    println ( "Name: $name, V1: $val1, V2: $val2" )
}

new File( 'names.csv' ).readLines().sort{ it }.each {
    println it
    functionX( *( it.split( ',' ) ) )
}

输出量:

Bertha,2,21
Name: Bertha, V1: 2, V2: 21
Bertha,3,162021
Name: Bertha, V1: 3, V2: 162021
John,2,12
Name: John, V1: 2, V2: 12
John,2,122
Name: John, V1: 2, V2: 122
John,3,20
Name: John, V1: 3, V2: 20
John,3,2022
Name: John, V1: 3, V2: 2022
Philip,3,12022
Name: Philip, V1: 3, V2: 12022
name,val1,val2

相关问题