如何在 bash json 中使用 grep 查找空名称?
How can I find an empty name using grep in bash json?
如何使用 grep 查找空名称?
我的 json 个文件
{
"IDS": [
{
"digest": "sha256:b97"
},
{
"digest": "sha256:d25"
},
{
"digest": "sha256:c40",
"tag": "0"
}
]
}
我想使用 grep 查找不带标签的摘要文件。
我想要这个结果。
sha256:b97
sha256:d25
我用过jq'has(tag) == false',但是我的环境性质用jq是不行的
不知道没有jq,python等工具怎么用
感谢您阅读我的post。 XD
不要为此使用正则表达式。使用 JSON 解析器:
jq -r '.IDS[] | select(has("tag") | not) | .digest' file.json
如果不允许您使用正确的工具,您的雇主就不会让您完成工作。
如果 jq 不可行,awk 的替代方案可能是:
awk '/"digest"[^,]+$/{gsub(/"/,""); print $NF}' input.json
如果输入被缩小:
$ echo $foo
{ "IDS": [ { "digest": "sha256:b97" }, { "digest": "sha256:d25" }, { "digest": "sha256:c40", "tag": "0" } ] }
$
$ awk -vRS='[{}]' 'NF==2 && [=11=] ~ /"digest"/{gsub(/"/,"");print $NF}' <<< "$foo"
sha256:b97
sha256:d25
如何使用 grep 查找空名称?
我的 json 个文件
{
"IDS": [
{
"digest": "sha256:b97"
},
{
"digest": "sha256:d25"
},
{
"digest": "sha256:c40",
"tag": "0"
}
]
}
我想使用 grep 查找不带标签的摘要文件。
我想要这个结果。
sha256:b97
sha256:d25
我用过jq'has(tag) == false',但是我的环境性质用jq是不行的
不知道没有jq,python等工具怎么用
感谢您阅读我的post。 XD
不要为此使用正则表达式。使用 JSON 解析器:
jq -r '.IDS[] | select(has("tag") | not) | .digest' file.json
如果不允许您使用正确的工具,您的雇主就不会让您完成工作。
如果 jq 不可行,awk 的替代方案可能是:
awk '/"digest"[^,]+$/{gsub(/"/,""); print $NF}' input.json
如果输入被缩小:
$ echo $foo
{ "IDS": [ { "digest": "sha256:b97" }, { "digest": "sha256:d25" }, { "digest": "sha256:c40", "tag": "0" } ] }
$
$ awk -vRS='[{}]' 'NF==2 && [=11=] ~ /"digest"/{gsub(/"/,"");print $NF}' <<< "$foo"
sha256:b97
sha256:d25