使用 jq 更改所有键的值
Change value for all keys with jq
我有这个package.json
{
"dependencies": {
"body-parser": "^1.19.0",
"eslint": "^7.15.0",
"express": "^4.17.1"
}
}
使用此命令:
jq '.dependencies.eslint="latest"|.dependencies.express="latest"' package.json
我得到了这个结果:
{
"dependencies": {
"body-parser": "^1.19.0",
"eslint": "latest",
"express": "latest"
}
}
如何在不枚举单个键的情况下将所有版本更改为“最新”?
像这样:
jq '.dependencies[]="latest"' package.json
输出:
{
"dependencies": {
"body-parser": "latest",
"eslint": "latest",
"express": "latest"
}
}
简洁、精确且易于阅读的解决方案:
.dependencies |= map_values("latest")
如果 package.json
偶然包含嵌套项,如下所示:
{
"dependencies": {
"body-parser": "^1.19.0",
"eslint": "^7.15.0",
"express": "^4.17.1",
"branch": {
"alternative": "^1.2.3"
}
}
}
然后使用 jtc
的替代(非 jq)解决方案如下所示:
<package.json jtc -w'<>a:' -u'"latest"'
- 该解决方案不会破坏原始 JSON 结构。
PS。我是 jtc
unix JSON 处理器的开发者。
PPS。 SO 要求免责声明。
我有这个package.json
{
"dependencies": {
"body-parser": "^1.19.0",
"eslint": "^7.15.0",
"express": "^4.17.1"
}
}
使用此命令:
jq '.dependencies.eslint="latest"|.dependencies.express="latest"' package.json
我得到了这个结果:
{
"dependencies": {
"body-parser": "^1.19.0",
"eslint": "latest",
"express": "latest"
}
}
如何在不枚举单个键的情况下将所有版本更改为“最新”?
像这样:
jq '.dependencies[]="latest"' package.json
输出:
{
"dependencies": {
"body-parser": "latest",
"eslint": "latest",
"express": "latest"
}
}
简洁、精确且易于阅读的解决方案:
.dependencies |= map_values("latest")
如果 package.json
偶然包含嵌套项,如下所示:
{
"dependencies": {
"body-parser": "^1.19.0",
"eslint": "^7.15.0",
"express": "^4.17.1",
"branch": {
"alternative": "^1.2.3"
}
}
}
然后使用 jtc
的替代(非 jq)解决方案如下所示:
<package.json jtc -w'<>a:' -u'"latest"'
- 该解决方案不会破坏原始 JSON 结构。
PS。我是 jtc
unix JSON 处理器的开发者。
PPS。 SO 要求免责声明。