gpt4 book ai didi

awk - 如何过滤掉./gradlew项目:dependencies command?(版本3)的某个部分

转载 作者:行者123 更新时间:2023-12-04 07:18:50 26 4
gpt4 key购买 nike

这是 How to filter out a certain portion of ./gradlew project:dependencies command? (version 2) 的更新问题
我正在编写一个解析 dependencies{} 的例程build.gradle 的一部分文件,可能看起来像这样

dependencies {
compile "com.groupId:artifact0:1.0.0"
compile "com.groupId:artifact1:2.+"
compile "com.groupId:artifact3:3.+"
compile "org.otherGroupId:artifact:1.0.0"
}
现在我运行一个 Jenkins 管道 (Groovy) 脚本,它执行以下操作。 awk获取第 1 列中以“+”字符开头的所有行,并具有“com.groupId”字符串。我所说的“其他数据”是在第 1 列中既没有“+”也没有“com.groupId”字符串的行,即 awk脚本忽略这些。
sh "./gradlew project:dependencies | tee deps.txt"
List depList = sh(script: " awk -F '[: ]+' -v OFS=: '/^\\+.*com\\.groupId/ && !seen[\$2,\$3]++{print \$2, \$3, \$4}' deps.txt",
returnStdout: true).split("\n")
我的 deps.txt显示
+ --- com.groupId:artifact0:1.0.0
... other data
+ --- com.groupId:artifact1:2.+ -> 2.1.0
... other data
+ --- com.groupId:artifact2:3.+ -> 3.0.0 (*)
... other data
+ --- org.otherGroupId:artifact:1.0.0
... other data
和我的 List depList好像
com.groupId:artifact0:1.0.0
com.groupId:artifact1:2.+
com.groupId:artifact2:3.+
这正是我问的 awk做对了吗?注意第四个依赖项不存在,同样是因为我的 awk陈述。
但是我该如何修改 awk获取实际版本值的脚本,所以我的 depList显示这个?换句话说,我希望它获得 dependencies 获得的解析版本。 Gradle 任务。
com.groupId:artifact0:1.0.0
com.groupId:artifact1:2.1.0
com.groupId:artifact2:3.0.0

最佳答案

你可以用这个awk :

awk '!/^\+.*com\.groupId/ {next} {dep = $2}
NF >= 4 && $3 == "->" {sub(/:[^:]+$/, ":" $4, dep)} {print dep}' deps.txt

com.groupId:artifact0:1.0.0
com.groupId:artifact1:2.1.0
com.groupId:artifact2:3.0.0
详情:
  • 我们跳过所有不以 + 开头的行并包含 com.groupId因为我们只想要 com.groupId依赖项
  • 店铺 $2在变量 dep
  • 如果有 >= 4 个字段和 $3->然后在 : 之后替换最后一个值为 $4
  • 最后我们打印 dep
  • 关于awk - 如何过滤掉./gradlew项目:dependencies command?(版本3)的某个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68626331/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com