You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Groovy(Jenkinsfile)按指定格式将文本文件行存入数组?

解决方案

问题说明

现有file.txt文件内容如下:

##---A1---
a1.la
a2.la
a3.la
##---B1--
b1.la
b3.la
##---C1--
c1.la
c2.la
c3.la
c4.la

需要编写可在Jenkinsfile中运行的Groovy脚本,将内容转换为如下结构的数组:

Main = [A1 B1 C1]
A1 = [a1.la b1.la c1.la]
B1 = [b1.la b3.la]
C1 = [c1.la c2.la c3.la c4.la]

Jenkinsfile中的Groovy实现

pipeline {
    agent any
    stages {
        stage('Process File') {
            steps {
                script {
                    def filePath = 'file.txt'
                    def groups = [:]
                    def currentGroup = null

                    // 读取文件并解析各个分组
                    new File(filePath).eachLine { line ->
                        def trimmedLine = line.trim()
                        if (trimmedLine.startsWith('##---')) {
                            // 提取分组名称,清理分隔符
                            currentGroup = trimmedLine.replaceAll(/##---|[-]+/, '').trim()
                            groups[currentGroup] = []
                        } else if (currentGroup && trimmedLine) {
                            // 将有效行加入当前分组的列表
                            groups[currentGroup] << trimmedLine
                        }
                    }

                    // 构造所需的数组结构
                    def mainArray = groups.keySet().toList()
                    def a1Array = groups.collect { it.value[0] } // 取每个分组的第一个元素

                    // 按要求格式输出结果
                    println "Main = [${mainArray.join(' ')}]"
                    println "A1 = [${a1Array.join(' ')}]"
                    groups.each { group, items ->
                        if (group != 'A1') {
                            println "${group} = [${items.join(' ')}]"
                        }
                    }

                    // 若后续步骤需要使用这些数组,可直接引用变量:
                    // mainArray, a1Array, groups.B1, groups.C1 等
                }
            }
        }
    }
}

脚本逻辑说明

  1. 文件解析:逐行读取file.txt,识别以##---开头的分组行,提取分组名称并创建对应的空列表;将分组下的非空行添加到对应列表中。
  2. 数组构造:
    • Main数组直接取所有分组名称的集合
    • A1数组遍历每个分组,取每个分组的第一个元素
    • B1和C1数组直接使用对应分组的完整元素列表
  3. 结果输出:按照指定格式打印数组,也可将变量保留供Jenkins流水线后续步骤调用。

内容的提问来源于stack exchange,提问作者Anjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:52:43