{
"PlatformID": 1024,
"SystemId": 11640,
"SystemName": "010.10.10.10",
"DomainName": null,
"AccountId": 15631,
"AccountName": "merg1",
"AccountNameFull": "merg1",
"ApplicationID": null,
"ApplicationDisplayName": null,
"MaximumReleaseDuration": 120,
"MaxReleaseDurationDays": 0,
"MaxReleaseDurationHours": 2,
"MaxReleaseDurationMinutes": 0,
"InstanceName": "",
"DefaultReleaseDuration": 120,
"DefaultReleaseDurationDays": 0,
"DefaultReleaseDurationHours": 2,
"DefaultReleaseDurationMinutes": 0,
"LastChangeDate": "2019-08-21T10:53:25.237",
"NextChangeDate": null,
"IsChanging": false,
"IsISAAccess": false,
"PreferredNodeID": "3ef3e7c7-5851-451b-b1a4-c62556b588ce"
}
我在不使用jq工具的情况下从上述JSON响应中查找“ SystemId和AccountId”。
请提供有关Shell脚本的帮助。谢谢。
答案 0 :(得分:1)
您可以在以下用法上使用grep
。
grep -E -- 'AccountId|SystemId' t.txt | awk '{print $2}'
11640,
15631,
或者,如果您想使用jq
,可以尝试一下。
cat t.txt | jq '.AccountId , .SystemId'
15631
11640
答案 1 :(得分:0)
如果您确定json文件的结构,并且应该执行以下步骤(这要求对键和值始终在同一行上-否则,我们需要删除前后的空白结肠)
grep
提取包含SystemId
或AccountId
的行awk
提取该行中的第二个字段(以冒号分隔)cat a.json | tr , '\n' | grep SystemId | awk -F ':' '{print $2}'
11640
cat a.json | tr , '\n' | grep AccountId | awk -F ':' '{print $2}'
15631
已编辑:如果json位于变量中,则需要将输出保存到变量:
#!/bin/bash
JSON=$(cat a.json)
sysID=$(echo $JSON | tr , '\n' | grep SystemId | awk -F ':' '{print $2}')
accID=$(echo $JSON | tr , '\n' | grep AccountId | awk -F ':' '{print $2}')
echo "System ID = $sysID, Account ID = $accID"
# output
# System ID = 11640, Account ID = 15631
答案 2 :(得分:0)
uvicorn main:app --reload
这对我有用...!不使用jq工具