Esb*_*rdt 1 arrays bash json jq
我有一个如下所示的 JSON 文件:
{
"Results": [
{
"Severity": "LOW",
"InstalledVersion": "1.21.1ubuntu2",
"FixedVersion": "1.21.1ubuntu2.1"
},
{
"Severity": "LOW",
"InstalledVersion": "1.21.1ubuntu2"
},
{
"Severity": "HIGH",
"VulnerabilityID": "CVE-2016-2781"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想创建以下 JSON 文件:
[
{
"Severity": "LOW",
"InstalledVersion": "1.21.1ubuntu2",
"FixedVersion": "1.21.1ubuntu2.1",
"VulnerabilityID": ""
},
{
"Severity": "LOW",
"InstalledVersion": "1.21.1ubuntu2",
"FixedVersion": "",
"VulnerabilityID": ""
},
{
"Severity": "HIGH",
"InstalledVersion": "",
"FixedVersion": "",
"VulnerabilityID": "CVE-2016-2781"
}
]
Run Code Online (Sandbox Code Playgroud)
我尝试过迭代第一个 JSON 文件,但是当我按照以下方式执行此操作时,会出现随机解析错误(使用我正在使用的真实 JSON 文件)。所以我认为我正在做的管道有问题。
jq -c '.Results[]' my.json | while read i; do
echo $i;
done
Run Code Online (Sandbox Code Playgroud)
在 JSON 文件中,我使用jq -c '.Results[]'工作得很好,但是当我在迭代时对生成的$i执行jq操作时,我突然遇到几个解析错误。
有没有更好的方法来迭代 JSON 文件中的键值对?当然,我可以只安装 Python/R 并进行典型的练习,但我真的希望它能够在 shell 脚本中工作。
您可以+通过组合两个对象的字段来将两个对象添加在一起;如果两个对象具有相同的值,则使用右手对象的值。因此,如果您将现有对象设为 RHS:
\xc2\xa0jq \'[ .Results[] | {Severity:"", InstalledVersion:"", FixedVersion:"", VulnerabilityID:""} + . ]\' input.json \n[\n {\n "Severity": "LOW",\n "InstalledVersion": "1.21.1ubuntu2",\n "FixedVersion": "1.21.1ubuntu2.1",\n "VulnerabilityID": ""\n },\n {\n "Severity": "LOW",\n "InstalledVersion": "1.21.1ubuntu2",\n "FixedVersion": "",\n "VulnerabilityID": ""\n },\n {\n "Severity": "HIGH",\n "InstalledVersion": "",\n "FixedVersion": "",\n "VulnerabilityID": "CVE-2016-2781"\n }\n]\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1407 次 |
| 最近记录: |