Parsowanie json do csv w bash'u uzywajac jq

0

Hej mam zagniezdonego jsona do sparsowania do csv ( interesuja mnie tylko kilka pul session_id, service, resonse i timestamp) pomysly jak za pomoca jq to zrobic ? Jestem w slepym punkcie proboje juz kilka godzin na rozne sposoby i nie daje rady sparsowac.

{
  "took" : 10,
  "timed_out" : false,
  "_shards" : {
    "total" : 75,
    "successful" : 75,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 675584,
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "ip_logs",
        "_type" : "doc",
        "_id" : "vD9pLGwtwcBlEjj7Tmty9Ma",
        "_score" : 0.2876821,
        "_source" : {
          "source" : "/path/tomy/log",
          "fields" : {
            "preprocess" : "ip",
            "bu" : "gp",
            "region" : "europe",
            "role" : "ip",
            "type" : "syslog",
            "project" : "pancake",
            "env" : "pd"
          },
          "proxy" : "Input",
          "prospector" : {
            "type" : "log"
          },
          "@timestamp" : "2018-11-19T14:38:48.133Z",
          "offset" : 233,
          "time" : "Mon Nov 19 14:38:44 GMT 2018 ",
          "response" : "Received some response",
          "tags" : [
            "beats_input_codec_plain_applied",
            "_grokparsefailure"
          ],
          "target_url" : "null",
          "target_service" : "PANCAKE",
          "service" : "All About You",
          "beat" : {
            "name" : "41.41.31.41",
            "hostname" : "14.31.4.14",
            "version" : "14.3.13"
          },
          "input" : {
            "type" : "log"
          },
          "date" : "2018-11-19 14:38:48",
          "@version" : "1",
          "session_id" : "6668d244-0ba9-4ac3-8150-afa0b3596c59"
        }
      },
      {
        "_index" : "ip_logs",
        "_type" : "doc",
        "_id" : "9J2rNWcBlEjj7ThetmtXUWT",
        "_score" : 0.2876821,
        "_source" : {
          "response" : "Received some response",
          "@timestamp" : "2013-11-21T18:12:19.472Z",
          "proxy" : "Input Proxy",
          "time" : "Wed Nov 24 18:12:18 GMT 2013 ",
          "offset" : 233,
          "input" : {
            "type" : "log"
          },
          "@version" : "1",
          "source" : "/path/to/log",
          "service" : "All About You",
          "prospector" : {
            "type" : "log"
          },
          "tags" : [
            "beats_input_codec_plain_applied",
            "_grokparsefailure"
          ],
          "fields" : {
            "role" : "is",
            "preprocess" : "is",
            "bu" : "gp",
            "env" : "pd",
            "type" : "syslog",
            "region" : "europe",
            "project" : "pancake"
          },
          "beat" : {
            "hostname" : "ip-14.14.13.14",
            "version" : "12.4.3",
            "name" : "ip-144.14.13.41"
          },
          "target_service" : "OALD",
          "session_id" : "07f5149d-61c5-44cd-ad39-bc0d1bd19d1f",
          "target_url" : "null",
          "date" : "2012-11-21 09:35:51"
        }
      }
    ]
  }
}
0

To moze wrzuc jak ma wygladac wynikowy csv?

0

Idealnie by bylo w tym formacie: bo nie wszystkie pola mnie interesuja:

PROXY, TIMESTAMP, RESPONSE,TARGET_URL,TARGET_SERVICE,SERVICE , SESSION_ID
Input Proxy, 2013-11-11T14:15:48.133Z, Received some response, null, PANCAKE, All About You, dfgs2c4-0ba9-4ac3-8150-afa0b3596c59

1
jq -r '.hits.hits[]._source | [.proxy, .["@timestamp"], .response, .target_url, .target_service, .service, .session_id] | @csv'

1 użytkowników online, w tym zalogowanych: 0, gości: 1