Похожа на вопрос ответил здесь: jq - How to select objects based on a 'whitelist' of property values, я хотел бы, чтобы выбрать объекты, основанные на черном списке значений свойств ...JQ - Как выбрать объекты, основанные на «черный список» из значения свойств
Следующая отлично работает как белый список: curl -s 'https://api.github.com/repos/stedolan/jq/commits?per_page=10' | jq --argjson whitelist '["stedolan", "dtolnay"]' '.[] | select(.author.login == $whitelist[]) | {author: .author.login, message: .commit.message}'
{
"author": "dtolnay",
"message": "Remove David from maintainers"
}
{
"author": "stedolan",
"message": "Make jv_sort stable regardless of qsort details."
}
{
"author": "stedolan",
"message": "Add AppVeyor badge to README.md\n\nThanks @JanSchulz, @nicowilliams!"
}
проблема заключается в том, я хочу, чтобы отрицать, что и только шоу совершает от авторов, кроме «stedolan» и «dtolnay»; Однако, если я использую !=
или not
, мне кажется, чтобы получить тот же неправильный результат:
[email protected]:~⟫ curl -s 'https://api.github.com/repos/stedolan/jq/commits?per_page=10' | jq --argjson blacklist '["stedolan", "dtolnay"]' '.[] | select(.author.login == $blacklist[] | not) | .author.login' | sort | uniq -c | sort -nr
14 "nicowilliams"
2 "stedolan"
1 "dtolnay"
[email protected]:~⟫ curl -s 'https://api.github.com/repos/stedolan/jq/commits?per_page=10' | jq --argjson blacklist '["stedolan", "dtolnay"]' '.[] | select(.author.login != $blacklist[]) | .author.login' | sort | uniq -c | sort -nr
14 "nicowilliams"
2 "stedolan"
1 "dtolnay"
Любые предложения?
Спасибо, это отлично работает: – user284274