groovy 仅更改文件中的行号

cnh2zyt3  于 2023-01-29  发布在  其他
关注(0)|答案(1)|浏览(91)

我只想更改一行的数字。
源文件:

IMAGE_VERSION_TD_S=1.108.1.1
IMAGE_VERSION_CPO=1.87.13.1
IMAGE_VERSION_CVM=1.71.1.1

我想搜索类似("IMAGE_VERSION_CPO =")的字符串,并仅将数字更改为1.90.12.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
qvk1mo1f

qvk1mo1f1#

如果这是属性文件,请使用readProperties步骤:

def props = readProperties file: pathEnv, text: "IMAGE_VERSION_CPO=${imageVersion}"
writeFile file: "${directoryPortal}/${params.ENVIROMENT}/${envFile}", text: props.collect { "${it.key}=${it.value}" }.join("\n")

如果,出于某种原因,这不是一个 prop 文件:

def data = readFile(file: pathEnv)
data = data.replaceAll(/(?<=IMAGE_VERSION_CPO=)[\d\.]+/, imageVersion)
writeFile file: "${directoryPortal}/${params.ENVIROMENT}/${envFile}", text: data

可能有一个更好的正则表达式,但它似乎是工作

相关问题