Как извлечь данные с помощью JQ - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь использовать jq для извлечения данных из JSON полей, которые содержат определенное значение c.

Это JSON, с которым я работаю:

"results": [
{
  "input": {
    "FUZZ": "actuator",
    "HOST": "https://zzlckzc4kz-3.algolia.net"
  },
  "position": 13,
  "status": 301,
  "length": 162,
  "words": 5,
  "lines": 8,
  "redirectlocation": "https://algolia.net/1/404",
  "resultfile": "",
  "url": "https://zzlckzc4kz-3.algolia.net/actuator"
},
{
  "input": {
    "FUZZ": "actuator/heapdump",
    "HOST": "https://zzlckzc4kz-3.algolia.net"
  },
  "position": 24,
  "status": 301,
  "length": 162,
  "words": 5,
  "lines": 8,
  "redirectlocation": "https://algolia.net/1/404",
  "resultfile": "",
  "url": "https://zzlckzc4kz-3.algolia.net/actuator/heapdump"
},
]

Я хочу, чтобы вывод был, если «status»: 301, а затем отобразить «url:»

1 Ответ

0 голосов
/ 21 февраля 2020

Попробуйте следующее, если предположить, что файл, содержащий этот документ json, имеет /tmp/json:

jq '.results[] | select(.status==301) | .url' /tmp/json

Кроме того, я заметил, что документ, который вы указали в вопросе, на самом деле не является действительным JSON документ. Я полагаю, вы имели в виду следующее:

{
  "results": [
    {
      "input": {
        "FUZZ": "actuator",
        "HOST": "https://zzlckzc4kz-3.algolia.net"
      },
      "position": 13,
      "status": 301,
      "length": 162,
      "words": 5,
      "lines": 8,
      "redirectlocation": "https://algolia.net/1/404",
      "resultfile": "",
      "url": "https://zzlckzc4kz-3.algolia.net/actuator"
    },
    {
      "input": {
        "FUZZ": "actuator/heapdump",
        "HOST": "https://zzlckzc4kz-3.algolia.net"
      },
      "position": 24,
      "status": 301,
      "length": 162,
      "words": 5,
      "lines": 8,
      "redirectlocation": "https://algolia.net/1/404",
      "resultfile": "",
      "url": "https://zzlckzc4kz-3.algolia.net/actuator/heapdump"
    }
  ]
}

...