Interessant.
Kriege so "state": "on" als antwort und nicht "state": "up"
Brauche Hilfe in einem Script
Re: Brauche Hilfe in einem Script
Zefram Cochrane, 5. April 2063. Cochrane unternimmt den ersten Warpflug der Menschheit, was den Besuch der Vulkanier zurfolge hat (Star Trek 8 - Der Erste Kontakt)
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Brauche Hilfe in einem Script
jq ist ein sehr nützliches Werkzeug um JSON-Daten zu extrahieren:
Aus Deinen obigen Daten...
z. B. so:
Alle uuids extrahieren:
Nur uuids von bestimmten message/ids:
Werte in Variablen einlesen und ausgeben:
Siehe: https://stedolan.github.io/jq/
Aus Deinen obigen Daten...
Code: Alles auswählen
{
"message": {
"id": 29,
"temperature": 16.8,
"humidity": 21.0,
"battery": 1
},
"origin": "receiver",
"protocol": "alecto_ws1700",
"uuid": "0000-00-00-10-203518",
"repeats": 1
}
{
"message": {
"id": 81.0,
"temperature": 0.0,
"humidity": 0.0,
"battery": 1.0
},
"origin": "receiver",
"protocol": "teknihall",
"uuid": "0000-00-00-10-203518",
"repeats": 1
}
...
Alle uuids extrahieren:
Code: Alles auswählen
jq -r ".uuid" <data.json
#Ausgabe
0000-00-00-10-203518
0000-00-00-10-203518
...
Code: Alles auswählen
jq -r 'select((.message.id==29) or (.message.id==7))|.uuid' <data.json
#Ausgabe
0000-00-00-10-203518
0000-00-00-10-203518
Code: Alles auswählen
while read id temper humid batt ; do
echo $id $temper $humid $batt
done < <(jq -r '.[] | (.id|tostring) + " " +(.temperature|tostring) + " "
+ (.humidity|tostring) + " " + (.battery|tostring) ' <data.json 2>/dev/null)
#Ausgabe
29 16.8 21 1
81 0 0 1
0 -67.77 0 1
1023 null null null
null null null null
null null null null
null null null null
null null null null
null null null null
0 0 0 1
null null null null
null null null null
null null null null
7 null null null
0 0 0 1
null null null null
A15 null null null
0 0 0 1
0 -67.77 0 1
0 -67.77 0 1
0 0 0 1
0 -67.77 0 1
0 -67.77 0 1