[英]Parse JSON response using shell script
{
"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腳本。 謝謝你。
您可以在以下用法中使用grep
。
grep -E -- 'AccountId|SystemId' t.txt | awk '{print $2}'
11640,
15631,
或者如果你想使用jq
你可以試試這個。
cat t.txt | jq '.AccountId , .SystemId'
15631
11640
如果您確定 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
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"
這對我有用......! 不使用 jq 工具
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.