Фильтр jq только для «нулевых» значений

Если на обеих машинах установлена ​​одна и та же версия john the ripper, вы можете скопировать файлы сеанса, нажав Ctrl -c. Вам нужны foo.recиfoo.log(для сеанса foo), которые обычно находятся в каталоге, из которого вы запустили john. Поместите их в каталог, из которого вы будете выполнять на новой машине.

Однако сначала дважды проверьте версии, иначе вы можете получить ошибку Incorrect crash recovery file format: foo.rec.

0
22.11.2019, 11:18
2 ответа

Вы можете использовать альтернативный оператор://.

Например:

echo '{"a" : "b"}' | jq '. |.c // "Null"'

Или в вашем примере фильтрацию можно выполнить, добавив typeк фильтру:

jq '.logGroups[] | select (.retentionInDays.type != null)' 
2
28.01.2020, 02:38

Я предполагаю, что вы хотите получить записи logGroups, у которых вообще нет ключа retentionInDays.

$ jq '.logGroups[] | select( has("retentionInDays") == false )' file.json
{
  "storedBytes": 0,
  "metricFilterCount": 0,
  "creationTime": 1245,
  "logGroupName": "/aws/elasticbeanstalk/nginx",
  "arn": "longarnhere"
}

Если вам нужен массив из этих (вероятно, если их может быть более одного):

$ jq '[.logGroups[] | select( has("retentionInDays") == false ) ]' file.json
[
  {
    "storedBytes": 0,
    "metricFilterCount": 0,
    "creationTime": 1245,
    "logGroupName": "/aws/elasticbeanstalk/nginx",
    "arn": "longarnhere"
  }
]
8
28.01.2020, 02:38

Теги

Похожие вопросы