我有以下 bash 命令
something something ... |
xargs -L 1 az aks list --subscription |
jq -r '.[] | "az aks get-credentials --name \(.name) --resource-group \(.resourceGroup) --subscription=\(.id)"'
除了最后一个参数 \(.id)
之外,这都是有效的是一个字符串,我需要使用嵌入在最终输出字符串中的以下命令输出进行子串
awk -F "/" '{print $3}' <<< "/subscriptions/I-need-Selecting/resourcegroups/blahblah/blahblah"
我似乎无法在输出的命令中执行此命令 - 我无法转义 "
或'
在 awk
有效。
aks list --subscriptions
的输出命令看起来像
[{"name": "foo", "resourceGroup": "bar", "subscription": "/subscriptions/I-need-Selecting/resourcegroups/blahblah/blahblah"},
... ]
有人可以帮忙吗?
最佳答案
如果你问,给定
bash$ echo '[{"name": "tarzan", "resourceGroup": "froup", "id": "/subscriptions/I-need-Selecting/resourcegroups/blahblah/blahblah" }]' |
> jq -r '.[] | "az aks get-credentials --name \(.name) --resource-group \(.resourceGroup) --subscription=\(.id)"'
az aks get-credentials --name tarzan --resource-group froup --subscription=/subscriptions/I-need-Selecting/resourcegroups/blahblah/blahblah
...如何将“订阅”参数减少为一个子字符串,请尝试
jq '.[] | "az aks get-credentials --name \(.name) --resource-group \(.resourceGroup) --subscription=\(.id | split("/")[3])"'
在这里运行 Awk 并非不可能,但鉴于 jq
具有大致相同的功能和内置 JSON 解析器,因此在 jq
中本地执行此操作似乎更好>.
关于bash - 提取jq中的路径名组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67367991/