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

如何修改文件指定行版本号并避免生成多余空行?

解决Groovy修改指定行后生成文件出现多余空行的问题

需求

找到文件中以IMAGE_VERSION_CPO=开头的行,将其后的版本号替换为1.90.12.1,其余行保持原样。

源文件内容

IMAGE_VERSION_TD_S=1.108.1.1
IMAGE_VERSION_CPO=1.87.13.1
IMAGE_VERSION_CVM=1.71.1.1

期望输出文件

IMAGE_VERSION_TD_S=1.108.1.1
IMAGE_VERSION_CPO=1.90.12.1
IMAGE_VERSION_CVM=1.71.1.1

问题代码(执行后会生成多余空行)

def data = readFile(file: pathEnv)
def lines = data.readLines()
def strNewEnv = ''
lines.each {
    String line ->
    if (line.startsWith("IMAGE_VERSION_CPO=")) {
         strNewEnv = strNewEnv + '\n' + 'IMAGE_VERSION_CPO=' + imageVersion
    } else {
         strNewEnv = strNewEnv + '\n' + line
    }
    println line
}

println strNewEnv
writeFile file: directoryPortal+"/${params.ENVIROMENT}/"+envFile, text: strNewEnv

问题原因

这段代码每次拼接字符串时都先加\n,导致最终生成的字符串开头多了一个换行符,写入文件后就会出现多余的空行。

修复后的代码

def data = readFile(file: pathEnv)
def targetVersion = '1.90.12.1'
// 遍历每行,替换目标行内容
def lines = data.readLines().collect { line ->
    line.startsWith('IMAGE_VERSION_CPO=') ? "IMAGE_VERSION_CPO=${targetVersion}" : line
}

// 用换行符拼接所有行,避免多余空行
def strNewEnv = lines.join('\n')
println strNewEnv
writeFile file: "${directoryPortal}/${params.ENVIROMENT}/${envFile}", text: strNewEnv

修复说明

  1. 使用collect方法遍历每行,直接返回修改后的行或原行,代码更简洁易读
  2. 通过join('\n')拼接所有行,从根源避免了手动拼接时出现的开头空行问题
  3. 将目标版本号单独定义,后续修改版本时只需改动一处即可

内容的提问来源于stack exchange,提问作者Aldo Inácio da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:01:28