2016-12-19 4 views
-1

2 질문 : 2016-12 "와 같은 사람이 읽을 수있는 날짜로 타임 스탬프를 변경하지만 그대로JQ의 JSON 구문 분석 - TODATE를 사용하여 최신 타임 스탬프를 교체하고 배열 평면

1) 나는 JSON을 유지하려면 -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) "요청 {}"수준에서 .Headers []의 내용을 배열 밖으로 가져 오는 방법.

에서 :

{ 
    "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 
} 

사람 :

{ 
    "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 
} 

고마워,

모세

+0

누구든지 다음과 같이 사용했습니다. [leaf_paths as $ path | { "key": $ path | 지도 (tostring) | join ("."), "value": getpath ($ path)}] | from_entries –

답변

0

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 } 

나는

0 :-) 함께 모든 조각을 넣어 당신에게 그것을 떠날거야
+0

고마워요. @ 피크, 저는 아직도 두 번째 질문에 어려움을 겪고 있습니다. –

+0

아직 내가 찾고있는 것이 아닙니다. –

+0

??????????????? –