Показать необработанный список элементов после удаления другого элемента с помощью jq - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть json файл со следующим содержимым:

 {
    "stuff": {
        "usfull": [
            "aa",
            "bb",
            "cc",
            "dd"
        ],
        "usefulAsWell": [
            "ab",
            "cd",
            "ef",
            "gh"
        ],
        "waste": [
            "12",
            "34",
            "56"
        ],
        "moreWaste": [
            "78"
        ]
    }
 }

Мне нужен простой список пунктов «полезный» и «полезный». Я не знаю, будут ли добавлены более полезные элементы позже, но я знаю, какие элементы являются ненужными, и хочу, чтобы они были включены вместо простого перечисления полезных.

С помощью следующей команды я уже получил список, но он по-прежнему содержит символы формата, такие как [], "

cat example.json | jq -r '.stuff | del(.waste,.moreWaste) | .[]'

[
  "aa",
  "bb",
  "cc",
  "dd"
]
[
  "ab",
  "cd",
  "ef",
  "gh"
]

С помощью следующей команды я получаю хороший список, но, к сожалению, он содержит пустые слова:

cat example.json | jq -r '.stuff[] | .[]'

aa
bb
cc
dd
ab
cd
ef
gh
12
34
56
78

При попытке добавить часть удаления, я получаю сообщение об ошибке:

cat example.json | jq -r '.stuff[] | del(.waste,.moreWaste) | .[]'
jq: error (at <stdin>:24): Cannot index array with string "waste"

Любая идея на этот топи c?

Заранее спасибо!

1 Ответ

1 голос
/ 22 апреля 2020

В описании проблемы содержится несоответствие (опечатка?), Но похоже, что вы ищете:

.stuff | del(.waste) | del(.moreWaste) | .[][]

, который, как вы неявно заметили, может быть сокращен до:

.stuff | del(.waste, .moreWaste) | .[][]
...