Как отфильтровать последние пункты каждой недели?

У меня есть данные JSON, который содержит поле даты и времени в формате ISO 8601. Я хочу отфильтровать все вещи, которые произошли в выходные. Как я могу это сделать?

2 ответа

Если вы используете UTC(!) Datetime и jq связан с libc который поддерживает strftime()тогда вы можете использовать что-то вроде этого:

file.json:

{
  "name": "foo",
  "date": "2018-02-11T12:00:00Z"
}
{
  "name": "bar",
  "date": "2018-02-12T12:00:00Z"
}

jq команда:

jq '.[]|select(.date|fromdateiso8601|strftime("%w") as $d|$d=="7" or $d=="0")' file.json

7 стоит на субботу, 0 на воскресенье.

Выход:

{
  "name": "foo",
  "date": "2018-02-11T12:00:00Z"
}

Бесстыдная реклама.

Вы можете использовать версию jf, которая поддерживает все библиотеки Python. Для субботы и воскресенья:

pip install jf
jf 'filter(date(x.date).weekday() > 4)' file.json
Другие вопросы по тегам