簡體   English   中英

使用 shell 腳本解析 JSON 響應

[英]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 文件的結構,並且以下步驟應該可以工作(這要求一對鍵和值始終在同一行上——如果不是,我們需要刪除冒號前后的任何空格)

  1. 將每個字段分隔到單獨的行
  2. 使用grep提取具有SystemIdAccountId
  3. 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM