![](/img/trans.png)
[英]How to parse JSON array key name dynamically using shell script jq
[英]How to dynamically parse a JSON object with shell jq
我有一個關於shell的jq的問題。 所以我的JSON對象是:
{"1543446000": {"name": "John", "company": "foo"}, "1543359600": {"name": "Kate", "company": "bar"}}
numers 1543446000
和1543359600
是UNIX時間戳。 如何通過shell變量的時間戳解析其中一個JSON對象?
到目前為止我的shell腳本:
#!/bin/sh
URL="https://pastebin.com/raw/w7awz7kZ"
export DATE=$(date -d "$today 0" +%s)
JSON=$(curl -H "Accept: application/json" $API_URL)
JSON=$(echo $JSON | jq --arg date $DATE '.$date')
echo $JSON
似乎沒有用。 我的目的是選擇其中一個時間戳描述的內部JSON對象,這些時間戳基本上是今天的午夜。 所以我想選擇今天的數據集。
有什么建議么?
Greets,Innoberger
您需要使用完整語法進行密鑰訪問,因為美元符號會阻止您使用較短的表單。 錯誤消息應該提供此建議。
$ jq --arg date 1543359600 '.$date' tmp.json
jq: error: syntax error, unexpected '$' (Unix shell quoting issues?) at <top-level>, line 1:
.$date
jq: error: try .["field"] instead of .field for unusually named fields at <top-level>, line 1:
.$date
jq: 2 compile errors
請注意錯誤消息
'嘗試。[“field”]而不是.field'。
但是,您不需要引號,因為這將是您指定文字鍵$date
。
$ jq --arg date 1543359600 '.[$date]' tmp.json
{
"name": "Kate",
"company": "bar"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.