2个问题:
1)我想保持json,但将时间戳更改为人类可读日期,例如" 2016-12-19T09:21:35Z"
{
"Action": "ALLOW",
"Timestamp": 1482139256.274,
"Request": {
"Country": "US",
"URI": "/version/moot/beta.json",
"Headers": [
{
"Name": "Host",
"Value": "static.tiza.com"
},
{
"Name": "User-Agent",
"Value": "Faraday v0.9.2"
},
{
"Name": "Accept-Encoding",
"Value": "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
},
{
"Name": "Accept",
"Value": "*/*"
},
{
"Name": "X-Newrelic-Id",
"Value": "Vgcs5gbFU123dFBWGwIdAVFdrXBwc="
},
{
"Name": "X-Newrelic-Transaction",
"Value": "PxQDQVlzZVUd3NKQcrEwWwU"
}
],
"ClientIP": "107.22.17.51",
"Method": "GET",
"HTTPVersion": "HTTP/1.1"
},
"Weight": 1
}
我知道我可以使用'todate'JQ功能来做到这一点,但我丢失了所有其他数据
sh# cat temp.json | jq -r '.SampledRequests[].Timestamp | todate'
2016-12-19T09:21:44Z
----------------------------------
第二个问题:2)如何将.haders []的内容从"请求{}"级别中的数组中取出。
来自:
{
"TimeWindow": {
"EndTime": 1482156660,
"StartTime": 1482156420
},
"SampledRequests": [
{
"Action": "ALLOW",
"Timestamp": 1482139256.274,
"Request": {
"Country": "US",
"URI": "/version/moot/beta.json",
"Headers": [
{
"Name": "Host",
"Value": "static.tiza.com"
},
{
"Name": "X-Newrelic-Transaction",
"Value": "PxQDQVlzZVUd3NKQcrEwWwU"
}
],
"ClientIP": "107.22.17.51",
"Method": "GET",
"HTTPVersion": "HTTP/1.1"
},
"Weight": 1
}
],
"PopulationSize": 89
}
to:
{
"TimeWindow.EndTime": 1482156660,
"TimeWindow.StartTime": 1482156420,
"Action": "ALLOW",
"Timestamp": 1482139256.274,
"Request.Country": "US",
"Request.URI": "/version/moot/beta.json",
"Headers.Host": "static.tiza.com",
"Headers.X-Newrelic-Transaction": "PxQDQVlzZVUd3NKQcrEwWwU",
"ClientIP": "107.22.17.51",
"Method": "GET",
"HTTPVersion": "HTTP/1.1",
"Weight": 1,
"PopulationSize": 89
}
非常感谢,
moshe
1)使用| =而不是|
2)转换片段的一种方法:
{
"Headers": [
{
"Name": "Host",
"Value": "static.tiza.com"
},
{
"Name": "User-Agent",
"Value": "Faraday v0.9.2"
}
]
}
根据需要使用过滤器:
.Headers[] | { ("Headers." + .Name): .Value }
在您的情况下,您可以将以下过滤器用于(2):
.SampledRequests[].Request.Headers[] |=
{ ("Headers." + .Name): .Value }
我将其留给您将所有碎片放在一起: - )