jq:值前面缺少键,只有值在打印

  • 本文关键字:打印 前面 jq json curl jq
  • 更新时间 :
  • 英文 :


这是我从api中提取的原始数据:

{
"observations": [
{
"winddir": 292,
"humidity": 92,
"qcStatus": 1,
"imperial": {
"temp": 20,
"heatIndex": 20,
"dewpt": 40,
"windChill": 20,
"windSpeed": 3, 
"windGust": 3,
"pressure": 29.71,
"precipRate": 0,
"precipTotal": 0.01,
"elev": 1905
}
}
]
}

这是我运行的命令:

curl -s 'https://api.myawesomeapidata.com' | jq -r '.observations[].winddir, .observations[].humidity, .observations[].imperial.temp'

这是输出:

292
92
20

这是我想要的输出:

Wind Direction: 292
Humidity: 92
Temperature: 20

但如果这是输出,我会很好:

winddir: 292
humidity: 92
temp: 20

正如您所看到的,我希望密钥出现在值的前面。最好允许我在打印前更改密钥的名称(Wind Direction(,但我也可以使用原始密钥名称(winddir(。

尝试使用字符串插值

… | jq -r '.observations[]
| "Wind Direction: (.winddir)"
, "Humidity: (.humidity)"
, "Temperature: (.imperial.temp)"
' 
Wind Direction: 292
Humidity: 92
Temperature: 20

演示

然而,您可以通过使用来保留原始密钥名称

jq -r '.observations[] | {winddir},{humidity},(.imperial| {temp})| "(keys[]) : (.[])"'

这导致

winddir : 292
humidity : 92
temp : 20

演示