Я пытаюсь получить хосты, занесенные в черный список Firefox, из исходного списка, который он использует , чтобы я мог использовать его в другом браузере (Qutebrowser).
Я был достаточно успешно с jq
для синтаксического анализа JSON.
#!/bin/sh
for term in Advertising Content Social Analytics Fingerprinting Cryptomining Disconnect; do
jq ".categories.$term[][][][]" services.json
done
Однако несколько самых глубоких объектов (которые всегда находятся на одном уровне вложенности) некоторых категорий содержат дополнительную информацию, которая нарушает jq
, например, "performance": "true"
ниже:
{
"categories": {
...
"Cryptomining": [
{
"a.js": {
"http://zymerget.bid": [
"alflying.date",
"alflying.win",
...
"zymerget.faith"
],
"performance": "true"
}
},
{
"CashBeet": {
"http://cashbeet.com": [
"cashbeet.com",
"serv1swork.com"
]
}
},
...
Так, например, когда l oop приходит к jq ".categories.Cryptomining[][][][]" services.json
, возникает ошибка и прекращается обработка категории:
"alflying.date"
"alflying.win"
...
"zymerget.faith"
jq: error (at servicesN.json:11167): Cannot iterate over string ("true")
Есть ли способ игнорировать эти атрибуты, не являющиеся массивами, с помощью jq
? В качестве extra , пожалуйста, дайте мне знать, могу ли я отказаться от l oop и выполнить весь процесс за один jq
(потому что в настоящее время, как видно выше, я перечисляю все категории в для l oop).