Уютный трикотаж: интернет магазин белорусского трикотажа

Jq com: jq Manual (development version)

Jq com: jq Manual (development version)

Kang J-Q / Tang Q текущий результат, расписание матчей и результаты — Теннис

Падение коэффициентовИзбранное
  • Футбол
  • Баскетбол
  • Теннис
  • Теннис
  • ITF Женщины

ITF Женщины

Получать уведомления о всех играх этой команды

Текущая форма

Наведите курсор на график формы, чтобы увидеть сведения о событии.

Высота шкалы отображает сложность игры в матче, основанной на котировках букмекеров.

Предстоящий матч

ITF Women

,

Hong Kong, Doubles W-C10-HKG-03A

Chiang Y K / Zhang Y

Kang J-Q / Tang Q

Информация о команде

Инфо

Тренер

Неизвестно

Матчи

Loading…

Текущая форма

Наведите курсор на график формы, чтобы увидеть сведения о событии.

Высота шкалы отображает сложность игры в матче, основанной на котировках букмекеров.

Loading…

О Kang J-Q / Tang Q

Kang J-Q / Tang Q текущий результат (и прямая онлайн видео трансляция), расписание и результаты во всех tennis турнирах в которых Kang J-Q / Tang Q сыграла. Соперник Kang J-Q / Tang Q еще не известен. Как только появится официальное расписание название команды будет показано здесь.

Когда начнется матч, вы сможете следить за ним Kang J-Q / Tang Q Текущий результат, прямая трансляция с обновлёнными результатами. Статистика будет обновлена по окончанию игры. Kang J-Q / Tang Q предыдущий матч был против Chiang Y K / Zhang Y на Hong Kong, Doubles W-C10-HKG-03A, матч завершился с результатом 2 — 0 (Chiang Y K / Zhang Y победа в матче). Kang J-Q / Tang Q закреплённая вкладка показывает последние 100 Теннис матчей со статистикой и иконками победа/поражение. Тут так же все Kang J-Q / Tang Q запланированные матчи, которые будут сыграны в будущем.

Kang J-Q / Tang Q график показателей и формы, это уникальный алгоритм SofascoreПрямая трансляция Теннис текущий результат, что мы генерируем на основе последних 10 матчей команды, статистике, детальном анализе и наших собственных знаниях. Этот график должен помочь вам сделать ставку на матчи Kang J-Q / Tang Q, но мы предупреждаем, что Sofascore Livescore не несёт ответственности или обязательств за любые финансовые или другие потери, будь то прямые или косвенные, как результат каких либо действий связанных с любым контентом это сайта.

Sofascore Теннис текущий результат текущий результат выпускается в виде мобильного приложения на iPhone, iPad, Android, Google Play и Windows phone. Sofascore можно найти во всех магазинах на всех языках. Установите приложение Sofascore и следите за всеми играми Kang J-Q / Tang Q в прямом эфире прямо на вашем смартфоне или планшете!

О нас

Сервис результатов на Sofascore livescore предлагает результаты, счет и итоговые таблицы. Следите за своими любимыми командами прямо сейчас! Результаты на Sofascore. com livescore обновляются автоматически и вам не нужно обновлять их вручную. Добавив игры, за которыми вы хотите следить в «Мои игры», вы будете в курсе результатов всех матчей и всей статистики.

Прямые трансляции топ матчей

Lazio — Atalanta

Villarreal — Barcelona

Al Ahly SC — Flamengo

Sporting CP — FC Porto

Leeds United — Manchester United

Sonego L. — Sinner J.

Sakkari M. — Vekić D.

Golden State Warriors — Los Angeles Lakers

Tampa Bay Lightning — Colorado Avalanche

Philadelphia Eagles — Kansas City Chiefs

«Когда радость заканчивается — остановись!»

Посетите нас

© 2023 Sofascore – Все права защищены.

Bash That JSON (с JQ)

Понятие SaaS может мешать операциям людей; Я говорю это как операционный человек сам. Вера просто не приходит к нам естественным образом, поэтому не всегда легко доверить ту или иную часть инфраструктуры поставщику программного обеспечения как услуги. Однако я считаю справедливым сказать, что все большее число из нас приходит к пониманию того, что наша личная способность соединять кабель rj45 или устанавливать MySQL не является фактором, который делает наши продукты или услуги лучше, чем у наших конкурентов. По мере расширения нашего самосознания — когда мы позволяем себе осознать, какой из наших вкладов приводит к конкурентным преимуществам — мы, естественно, начинаем стремиться оптимизировать нашу рабочую нагрузку для этих видов деятельности.

Самосознание помогает нам определить виды деятельности, на которые мы не должны тратить время, те части инфраструктуры, которые мы можем позволить себе переложить на SaaS. И по мере того, как происходит этот переход — когда мы передаем части нашей инфраструктуры монстру SaaS, — наши интерфейсы меняются с инструментов оболочки на API. 

Shell — это фантастический язык автоматизации с наименьшим общим знаменателем для работы с почтенными инструментами оболочки, с которыми мы все выросли. Да, это некрасиво и утилитарно. Да, ему не хватает базовых функций, присутствующих в каждом «серьезном» языке программирования. И да, иногда это неразумно используется для решения проблем, которые он не в состоянии решить. Но этот удобный маленький множитель силы всегда рядом с вами, позволяя быстро и легко склеивать одинокие маленькие инструменты, превращая их в многократно используемые решения, которые экономят время и головные боли.

Поскольку все больше вещей, на которые я полагаюсь каждый день, переходят на SaaS, я обнаружил, что трачу меньше времени на склеивание инструментов оболочки и больше времени на склеивание API. Однако для склейки API требуется работа с JSON. Разбор, извлечение, преобразование; JSON везде — вездесущий. Неизбежные. И у Shell просто не было очень хорошего ответа на вопрос JSON.

Пока, то есть JQ.

Представляя JQ

jq  — это быстрый, легкий, гибкий процессор CLI JSON. jq stream обрабатывает JSON, как awk stream обрабатывает текст. jq, в сочетании с cURL, предлагает мне написать оболочку для склеивания веб-API, что довольно здорово. Это помогло мне написать  shellbrato , библиотеку оболочки для API Librato, а также множество других небольших инструментов, которые я использую изо дня в день для таких вещей, как поиск PR, назначенных мне через API GitHub, и преобразование тегов экземпляра AWS в IP через API AWS ,

Давайте вместе попробуем jq, используя его для проверки большого неизвестного большого двоичного объекта JSON. Следующая команда возьмет BLOB-объект JSON, представляющий открытые проблемы в общедоступном репозитории Docker GitHub, и сохранит его в переменной оболочки с именем foo:

foo=$(curl 'https://gist.githubusercontent.com/djosephsen/a1a290366b569c5b98e9/raw/c0d01a18e16ba7c75d31a9893dd7fa1b8486a963/docker_issues')

Если вы откроете $ {foo}, вы, вероятно, увидите большой непонятный фрагмент текста (если только Докеру не удастся закрыть все их открытые проблемы к тому времени, как вы прочитаете это). Вы можете использовать jq, чтобы переформатировать этот текст и сделать его более читабельным, например:

echo ${foo} | jq .

Первый аргумент jq — это «фильтр». Точка, пожалуй, самый простой из всех фильтров jq. Это соответствует текущему вводу. Вы можете думать о точке как о бесконечно плотной частице JSON. Каждый раз, когда вы видите начальную точку (то есть точку, перед которой ничего нет), вы смотрите на все тело ввода, погруженное в маленькую точку. 

Существует множество jq-фильтров, и на первый взгляд многие из них покажутся глупыми и бесполезными, но, как вы обнаружите на своем пути к jq adeptness, они объединяются удивительным образом. Ключевое слово «тип» — это фильтр jq, который для каждого объекта на входе выдает тип этого объекта. Например:

echo '[][]{}' | jq type

дает «массив» «массив» «объект» из фильтра типов. Ключевое слово length генерирует размер (количество элементов) каждого объекта на входе.

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

echo '[][]{}' | jq length

дает три 0, поскольку оба массива и объект пусты. Тип и длина действительно полезны в контексте проверки больших двоичных объектов JSON, которые мы никогда раньше не видели. Запятый фильтр, который копирует входные данные и последовательно передает их в каждый окружающий его фильтр, позволяет нам использовать тип и длину одновременно. Попробуйте это на нашем огромном блобе:

echo ${foo} | jq 'type,length'

Для меня это приводит к «массиву» и 30. Запятая подала копию ввода, чтобы сначала ввести тип, а затем длину. В jq мы также можем направить вывод одного фильтра на вход следующего. Итак, более явный способ сделать то же самое, что мы только что сделали:

echo ${foo} | jq '.|type,length'

Это дает тот же результат, но дает вам лучшее представление о том, как фильтры работают вместе; возьмите ввод (точка) и передайте его фильтру запятых, который копирует ввод и отправляет копию в тип, а затем в длину. Итак, мы имеем дело с одним массивом, который содержит 30 элементов. 

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

echo ${foo} | jq '.[]'

Это дает нам необработанное содержимое массива (обратите внимание: по сравнению с простым jq ‘. Вывод больше не заключен в квадратные скобки). Это не очень полезно, так как контента много, так что это прокручивается за пределы экрана. Давайте попробуем использовать тип и длину для развернутого ввода:

echo ${foo} | jq '.[] | type,length'

Что ж, похоже, у нас есть куча объектов различной длины (мы уже знаем, что их 30), но трудно точно сказать, сколько их, так как они также прокручиваются с моего экрана. 

Давайте добавим еще несколько почтенных инструментов оболочки, чтобы помочь нам интерпретировать этот вывод:

echo ${foo} | jq '.[] | type,length' | sort | uniq -c

Теперь лучше, мы видим 30 объектов. В моем конкретном входе 20 из объектов имеют 19 атрибутов, и 10 из них имеют 20 атрибутов. Это странно: интересно, в чем разница между этими двумя видами. Фильтр ‘keys’ вернет массив имен атрибутов для каждого объекта на входе:

echo ${foo} | jq '.[]|keys'

Это показывает нам кучу атрибутов, но чтобы понять разницу между двумя типами объектов, мы должны вернуть sort и uniq:

echo ${foo} | jq '.[]|keys' | sort | uniq -c

А-а-а, в этом выводе я вижу, что только 10 моих объектов имеют атрибут pull_request. Это имеет смысл, так как не каждая проблема GitHub будет иметь соответствующий pull_request. 

jq также позволяет нам ссылаться на элементы и атрибуты по их индексу или ключу. Так что, если мы просто хотим увидеть первую проблему в массиве проблем, мы можем использовать:

echo ${foo} | jq '.[0]'

Или только ключи первого выпуска:

echo ${foo} | jq '.[0] | keys'

Или просто первый ключ первого номера

echo ${foo} | jq '.[0] | keys | .[0]'

Если мы просто хотели список идентификаторов проблем:

echo ${foo} | jq '. [].id'

Как бы мы выбрали конкретную проблему по ее идентификационному номеру? Фильтр select — это первый фильтр, который мы будем использовать, который принимает аргумент. Он выглядит как функция C, и ему предназначено дать выражение, которое возвращает «true» или «false». На практике jq интерпретирует ненулевые значения как «true», поэтому вы также можете передать выражения «select», которые возвращают числовые значения. У jq есть целый ряд операторов равенства, которые вы ожидаете. Таким образом, мы можем выбрать выпуск 117446711 с помощью:

echo ${foo} | jq '.[] | select(.id==117446711)'

Давайте поговорим немного больше о том, как это работает. Функция «select» для каждого объекта на своем входе, если ее аргументное выражение возвращает true для этого объекта, возвращает этот объект без изменений. Если его аргумент возвращает false, «select» ничего не выводит. 

Скобки с аргументами в jq немного похожи на Лас-Вегас: все, что там происходит, остается там. Я имею в виду, что вы можете выполнять все виды преобразования входных данных внутри аргумента «select», но «select» будет по-прежнему выводить исходный ввод без изменений. Например, скажем, мы хотели выбрать каждую проблему с одной или несколькими метками:

echo ${foo} | jq '.[] | select((.labels|length)>=1)'

Внутри этого фильтра «select» мы преобразуем входной объект, отфильтровывая только массив меток, а затем передаем массив меток в фильтр длины, чтобы увидеть, насколько он велик. Если оно больше или равно 1, то выражение выходит из «true», и «select» повторяет исходный объект (а не тот, который мы искали в процессе подсчета размера массива меток).

Последнее, что я хочу показать вам, — это несколько фильтров, которые вы можете использовать для проверки наличия ключей или значений внутри объекта. Я часто использую два «has» и «index». Прежний из этих фильтров выходит с логическим значением «истина» или «ложь», а другой с порядковым числом. Они оба идеально подходят для вложения внутри функции select () следующим образом:

echo ${foo} | jq '.[] | select (.| has("pull_request"))'

‘has’, как вы, наверное, догадались, проверяет наличие именованного ключа во входном объекте. Если ключ существует, «имеет» выход истины, в противном случае он выходит ложь. В приведенной выше команде мы передали копию ввода «select» в «has», чтобы проверить наличие атрибута «pull_request». Каждая проблема, имеющая атрибут, заставит ‘has’ выйти из ‘true’, что, в свою очередь, заставит ‘select’ вывести объект проблемы. В противном случае, «выберите» будет съесть объект. Это довольно типичный способ разбора только тех записей, которые имеют определенный ключ. 

‘index’ проверяет значения. Более конкретно, он возвращает значение индекса данного аргумента в своем вводе. Если вы дадите индексу массив из трех значений и запросите второе значение следующим образом:

echo '["foo","bar","bash"]' | jq 'index("bar")'

‘index’ вернет 1 (массивы индексируются нулем в jq). Если вы передадите ему строку и запросите подстроку, index вернет значение индекса символа в строке, где начинается подстрока. Например:

echo '"foo"' | jq 'index("oo")'

… также возвращает 1. ‘index’ возвращает ноль, если не может найти значение, которое вы ищете во входных данных. Мы можем вложить «index» внутрь «select» явно так:

echo ${foo} | jq '.[] | select((.state|index("open")>=0))'

Буквально, если значение индекса внутри меток текущей записи для значения «open» больше нуля, выберите запись. К счастью, фильтр «select» интерпретирует числовой вывод как «true», а нулевой вывод как «false», поэтому нам не нужно быть явным, и мы могли бы переписать эту последнюю команду как:

echo ${foo} | jq '.[] | select(.state|index("open"))'

Это больше похоже на наш «has», который проверяет наличие или ключи. С «index» и «has», вложенными в «select», у вас есть около 80% того, что вам нужно, чтобы манипулировать структурами JSON в оболочке для развлечения и получения прибыли. Фактически, большинство инструментов запросов, которые я написал для решения таких задач, как определение IP-адресов экземпляра AWS из имен тегов, используют только то, что я уже рассмотрел. Отсюда я покажу вам конструкцию объекта (которую я считаю скобками) и отображение, но эти два предмета действительно требуют отдельной статьи.

Отправьте нам твит на  @librato,  если вы хотите увидеть эту статью, и удачи вам в JSON!

Tutorial

GitHub имеет JSON API, так что давайте поэкспериментируем с ним. Этот URL дает нам последний 5 коммитов из репозитория jq.

 curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' 

Показать результат

 [
  {
    "ша": "d25341478381063d1c76e81b3a52e0592a7c997f",
    "совершить": {
      "автор": {
        "name": "Стивен Долан",
        "электронная почта": "[email protected]",
        "дата": "2013-06-22T16:30:59Z"
      },
      "коммиттер": {
        "name": "Стивен Долан",
        "электронная почта": "mu@netsoc. tcd.ie",
        "дата": "2013-06-22T16:30:59З"
      },
      "message": "Запрос на слияние #162 из stedolan/utf8-fixes\n\nИсправления Utf8. Закрывается #161",
      "дерево": {
        "ша": "6ab697a8dfb5a96e124666bf6d6213822599fb40",
        "url": "https://api.github.com/repos/stedolan/jq/git/trees/6ab697a8dfb5a96e124666bf6d6213822599fb40"
      },
      "url": "https://api.github.com/repos/stedolan/jq/git/commits/d25341478381063d1c76e81b3a52e0592a7c997f",
      "количество_комментариев": 0
    },
    "url": "https://api.github.com/repos/stedolan/jq/commits/d25341478381063d1c76e81b3a52e0592a7c997f",
    "html_url": "https://github.com/stedolan/jq/commit/d25341478381063d1c76e81b3a52e0592a7c997f",
    "comments_url": "https://api.github.com/repos/stedolan/jq/commits/d25341478381063d1c76e81b3a52e0592a7c997f/comments",
    "автор": {
      "логин": "стедолан",
...
 

GitHub возвращает красиво отформатированный JSON. Для серверов, которые этого не делают, это может быть полезно передать ответ через jq, чтобы распечатать его красиво. Простейший jq — это выражение .

, который принимает ввод и производит его без изменений в качестве вывода.

 curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.' 

Показать результат

 [
  {
    "ша": "d25341478381063d1c76e81b3a52e0592a7c997f",
    "совершить": {
      "автор": {
        "name": "Стивен Долан",
        "электронная почта": "[email protected]",
        "дата": "2013-06-22T16:30:59Z"
      },
      "коммиттер": {
        "name": "Стивен Долан",
        "электронная почта": "[email protected]",
        "дата": "2013-06-22T16:30:59Z"
      },
      "message": "Запрос на слияние #162 из stedolan/utf8-fixes\n\nИсправления Utf8. Закрывается #161",
      "дерево": {
        "ша": "6ab697a8dfb5a96e124666bf6d6213822599fb40",
        "url": "https://api.github.com/repos/stedolan/jq/git/trees/6ab697a8dfb5a96e124666bf6d6213822599fb40"
      },
      "url": "https://api.github.com/repos/stedolan/jq/git/commits/d25341478381063d1c76e81b3a52e0592a7c997f",
      "количество_комментариев": 0
    },
    "url": "https://api.
github.com/repos/stedolan/jq/commits/d25341478381063d1c76e81b3a52e0592a7c997f", "html_url": "https://github.com/stedolan/jq/commit/d25341478381063d1c76e81b3a52e0592a7c997f", "comments_url": "https://api.github.com/repos/stedolan/jq/commits/d25341478381063d1c76e81b3a52e0592a7c997f/комментарии", "автор": { "логин": "стедолан", ...

Мы можем использовать jq для извлечения только первого коммита.

 curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[0]' 

Показать результат

 {
  "ша": "d25341478381063d1c76e81b3a52e0592a7c997f",
  "совершить": {
    "автор": {
      "name": "Стивен Долан",
      "электронная почта": "[email protected]",
      "дата": "2013-06-22T16:30:59Z"
    },
    "коммиттер": {
      "name": "Стивен Долан",
      "электронная почта": "[email protected]",
      "дата": "2013-06-22T16:30:59З"
    },
    "message": "Запрос на слияние #162 из stedolan/utf8-fixes\n\nИсправления Utf8.
Закрывается #161", "дерево": { "ша": "6ab697a8dfb5a96e124666bf6d6213822599fb40", "url": "https://api.github.com/repos/stedolan/jq/git/trees/6ab697a8dfb5a96e124666bf6d6213822599fb40" }, "url": "https://api.github.com/repos/stedolan/jq/git/commits/d25341478381063d1c76e81b3a52e0592a7c997f", "количество_комментариев": 0 }, "url": "https://api.github.com/repos/stedolan/jq/commits/d25341478381063d1c76e81b3a52e0592a7c997f", "html_url": "https://github.com/stedolan/jq/commit/d25341478381063d1c76e81b3a52e0592a7c997f", "comments_url": "https://api.github.com/repos/stedolan/jq/commits/d25341478381063d1c76e81b3a52e0592a7c997f/comments", "автор": { "логин": "стедолан", "идентификатор": 79765, "avatar_url": "https://avatars.githubusercontent.com/u/79765?v=3", "gravatar_id": "", "url": "https://api.github.com/users/stedolan", "html_url": "https://github.com/stedolan", "followers_url": "https://api.github.com/users/stedolan/followers", "following_url": "https://api.
github.com/users/stedolan/following{/other_user}", "gists_url": "https://api.github.com/users/stedolan/gists{/gist_id}", "starred_url": "https://api.github.com/users/stedolan/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/stedolan/subscriptions", "organizations_url": "https://api.github.com/users/stedolan/orgs", "repos_url": "https://api.github.com/users/stedolan/repos", "events_url": "https://api.github.com/users/stedolan/events{/privacy}", "received_events_url": "https://api.github.com/users/stedolan/received_events", "тип": "Пользователь", "сайт_админ": ложь }, "коммиттер": { "логин": "стедолан", "идентификатор": 79765, "avatar_url": "https://avatars.githubusercontent.com/u/79765?v=3", "gravatar_id": "", "url": "https://api.github.com/users/stedolan", "html_url": "https://github.com/stedolan", "followers_url": "https://api.github.com/users/stedolan/followers", "following_url": "https://api.
github.com/users/stedolan/following{/other_user}", "gists_url": "https://api.github.com/users/stedolan/gists{/gist_id}", "starred_url": "https://api.github.com/users/stedolan/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/stedolan/subscriptions", "organizations_url": "https://api.github.com/users/stedolan/orgs", "repos_url": "https://api.github.com/users/stedolan/repos", "events_url": "https://api.github.com/users/stedolan/events{/privacy}", "received_events_url": "https://api.github.com/users/stedolan/received_events", "тип": "Пользователь", "сайт_админ": ложь }, "родители": [ { "ша": "54b9c9bdb225af5d886466d72f47eafc51acb4f7", "url": "https://api.github.com/repos/stedolan/jq/commits/54b9c9bdb225af5d886466d72f47eafc51acb4f7", "html_url": "https://github.com/stedolan/jq/commit/54b9c9bdb225af5d886466d72f47eafc51acb4f7" }, { "ша": "8b1b503609c161fea4b003a7179b3fbb2dd4345a", "url": "https://api.
github.com/repos/stedolan/jq/commits/8b1b503609c161fea4b003a7179b3fbb2dd4345a", "html_url": "https://github.com/stedolan/jq/commit/8b1b503609c161fea4b003a7179b3fbb2dd4345a" } ] }

В остальных примерах я не буду использовать команду curl — это не так. собирается измениться.

Там много информации, которая нам не нужна, поэтому мы ограничим ее в самые интересные области.

 jq '.[0] | {сообщение: .commit.message, имя: .commit.committer.name}' 

Показать результат

 {
  "message": "Запрос на слияние #162 из stedolan/utf8-fixes\n\nИсправления Utf8. Закрывается #161",
  "name": "Стивен Долан"
}
 

| Оператор в jq подает вывод одного фильтра ( .[0] , который получает первый элемент массива в ответе) на вход другого ( {...} , который создает объект из этих полей). Вы можете получить доступ вложенные атрибуты, такие как .commit.message .

Теперь займемся остальными коммитами.

 jq '.[] | {сообщение: .commit.message, имя: .commit.committer.name}' 

Показать результат

 {
  "message": "Запрос на слияние #162 из stedolan/utf8-fixes\n\nИсправления Utf8. Закрывается #161",
  "name": "Стивен Долан"
}
{
  "message": "Отклонить все чрезмерно длинные последовательности UTF8.",
  "name": "Стивен Долан"
}
{
  "message": "Исправить различные ошибки синтаксического анализа UTF8.\n\nВ частности, разобрать неверный код UTF8, заменив неработающие биты на U+FFFD\nи правильно выполнить повторную синхронизацию после неработающих последовательностей.",
  "name": "Стивен Долан"
}
{
  "message": "Исправить пример в руководстве для `floor`. См. #155.",
  "name": "Стивен Долан"
}
{
  "message": "Этаж документов",
  "name": "Николас Уильямс"
}
 

.[] возвращает каждый элемент массива, возвращаемый в ответе, по одному за время, которое все подается в {сообщение: . commit.message, имя: .commit.committer.name} .

Данные в jq представлены в виде потоков значений JSON — каждый jq выражение выполняется для каждого значения в его входном потоке и может производить любое количество значений в свой выходной поток.

Потоки сериализуются путем простого разделения значений JSON с помощью пробел. Это дружественный формат cat — вы можете просто присоединиться два потока JSON вместе и получить действительный поток JSON.

Если вы хотите получить вывод в виде единого массива, вы можете указать jq «соберите» все ответы, обернув фильтр квадратом скобки:

 jq '[.[] | {сообщение: .commit.message, имя: .commit.committer.name}]' 

Показать результат

 [
  {
    "message": "Запрос на слияние #163 из stedolan/utf8-fixes\n\nИсправления Utf8. Закрывается #161",
    "name": "Стивен Долан"
  },
  {
    "message": "Отклонить все чрезмерно длинные последовательности UTF8.",
    "name": "Стивен Долан"
  },
  {
    "message": "Исправить различные ошибки синтаксического анализа UTF8.
\n\nВ частности, разобрать неверный код UTF8, заменив неработающие биты на U+FFFD\nи правильно выполнить повторную синхронизацию после неработающих последовательностей.", "name": "Стивен Долан" }, { "message": "Исправить пример в руководстве для `floor`. См. #155.", "name": "Стивен Долан" }, { "message": "Этаж документов", "name": "Николас Уильямс" } ]

Теперь попробуем получить URL-адреса родительских коммитов из А также результаты API. В каждом коммите GitHub API включает информацию о «родительских» коммитах. Может быть один или много.

 "родители": [
  {
    "ша": "54b9c9bdb225af5d886466d72f47eafc51acb4f7",
    "url": "https://api.github.com/repos/stedolan/jq/commits/54b9c9bdb225af5d886466d72f47eafc51acb4f7",
    "html_url": "https://github.com/stedolan/jq/commit/54b9c9bdb225af5d886466d72f47eafc51acb4f7"
  },
  {
    "ша": "8b1b503609c161fea4b003a7179b3fbb2dd4345a",
    "url": "https://api.github.com/repos/stedolan/jq/commits/8b1b503609c161fea4b003a7179b3fbb2dd4345a",
    "html_url": "https://github. com/stedolan/jq/commit/8b1b503609c161fea4b003a7179b3fbb2dd4345a"
  }
]
 

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

 jq '[.[] | {сообщение: .commit.message, имя: .commit.committer.name, родители: [.parents[].html_url]}]' 

Показать результат

 [
  {
    "message": "Запрос на слияние #162 из stedolan/utf8-fixes\n\nИсправления Utf8. Закрывается #161",
    "name": "Стивен Долан",
    "родители": [
      "https://github.com/stedolan/jq/commit/54b9c9bdb225af5d886466d72f47eafc51acb4f7",
      "https://github.com/stedolan/jq/commit/8b1b503609c161fea4b003a7179b3fbb2dd4345a"
    ]
  },
  {
    "message": "Отклонить все чрезмерно длинные последовательности UTF8.",
    "name": "Стивен Долан",
    "родители": [
      "https://github.com/stedolan/jq/commit/ff48bd6ec538b01d1057be8e93b94eef6914e9ef"
    ]
  },
  {
    "message": "Исправить различные ошибки синтаксического анализа UTF8. \n\nВ частности, разобрать неверный код UTF8, заменив неработающие биты на U+FFFD\nи правильно выполнить повторную синхронизацию после неработающих последовательностей.",
    "name": "Стивен Долан",
    "родители": [
      "https://github.com/stedolan/jq/commit/54b9c9bdb225af5d886466d72f47eafc51acb4f7"
    ]
  },
  {
    "message": "Исправить пример в руководстве для `floor`. См. #155.",
    "name": "Стивен Долан",
    "родители": [
      "https://github.com/stedolan/jq/commit/3dcdc582ea993afea3f5503a78a77675967ecdfa"
    ]
  },
  {
    "message": "Этаж документов",
    "name": "Николас Уильямс",
    "родители": [
      "https://github.com/stedolan/jq/commit/7c4171d414f647ab08bcd20c76a4d8ed68d9c602"
    ]
  }
]
 

Здесь мы создаем объект, как и раньше, но на этот раз родителей поле установлено на [.parents[].html_url] , которое собирает все URL-адреса родительской фиксации, определенные в родительском объекте.


На этом урок заканчивается! Есть еще много всего, с чем можно поиграть. Идти прочитайте руководство, если вам интересно, и загрузите jq, если вы еще этого не сделали.

Скачать jq

jq написан на C и не имеет зависимостей во время выполнения, поэтому он должен быть можно построить его практически для любой платформы. Готовые двоичные файлы доступно для Linux, OS X и Windows.

Двоичные файлы должны просто запускаться, но в OS X и Linux вам может понадобиться чтобы сначала сделать их исполняемыми, используя chmod +x jq .

jq находится под лицензией MIT. Для всей крови подробности читайте в файле COPYING в исходниках дистрибутива.

jq использует библиотеку C для поддержки десятичных чисел. Это реанимация 1.8.1 лицензионный код, полученный из архива загрузок ICU http://download.icu-project.org/files/decNumber/decNumber-icu-368.zip.

Линукс

  • jq 1.5 есть в официальном Debian и Репозитории Убунту. Установить с помощью sudo apt-get install jq .

  • jq 1. 5 есть в официалке Репозиторий Федоры. Установите с помощью sudo dnf install jq .

  • jq 1.4 есть в официальном openSUSE репозиторий. Установите с помощью sudo zypper install jq .

  • jq 1.5 есть в официалке Арка репозиторий. Установите с помощью sudo pacman -S jq .

  • бинарных файла jq 1.6 для 64-битный или 32-бит.

  • бинарных файла jq 1.5 для 64-битный или 32-бит.

  • бинарных файла jq 1.4 для 64-битный или 32-бит.

  • исполняемые файлы jq 1.3 для 64-битный или 32-бит.

ОС Х

  • Используйте Homebrew для установки jq 1.6 с варить установить jq .

  • Используйте MacPorts для установки jq 1.6 с порт установить jq .

  • jq 1.6 бинарник для 64-бит.

  • jq 1. 5 бинарный для 64-бит.

  • бинарных файла jq 1.4 для 64-битный или 32-бит.

  • исполняемые файлы jq 1.3 для 64-битный или 32-бит.

FreeBSD

Солярис

  • pkgutil -i jq в OpenCSW для Solaris 10+, Sparc и x86.

  • двоичных файла jq 1.4 для Solaris 11 64-битный или 32-бит.

Окна

  • Используйте Chocolatey NuGet для установки jq 1.5 с шоколадный установить jq .

  • исполняемых файла jq 1.6 для 64-битный или 32-бит.

  • исполняемых файла jq 1.5 для 64-битный или 32-бит.

  • исполняемых файла jq 1.4 для 64-битный или 32-бит.

  • исполняемых файла jq 1.3 для 64-битный или 32-бит.

Контрольные суммы и подписи

Контрольные суммы SHA-256 предоставляются для всех выпускных и предварительных двоичных файлов. Их можно найти под sig/v1.x/sha256sum.txt. Контрольные суммы для jq 1.6 находятся в sig/v1.6/sha256sum.txt. Контрольные суммы для jq 1.5 находятся в sig/v1.5/sha256sum.txt.

Кроме того, все двоичные файлы подписаны Ключ подписи пакета jq. Подписи можно найти в разделе сиг/v1.x/*.asc. Подписи для jq 1.6 находятся в знак/v1.5/*.asc. Подписи для jq 1.5 находятся в знак/v1.5/*.asc. Вы можете использовать GnuPG для проверки подписи, загрузив подпись и запуск gpg --verify signal.asc .

Из исходного кода для Linux, OS X, Cygwin и других POSIX-подобных операционных систем

  • Архив с исходным кодом для jq 1.6
  • Архив с исходным кодом для jq 1.5

Вы можете собрать его с помощью обычного ./configure && make && sudo make install вздор.

Если вы заинтересованы в использовании последней версии разработки, попробуйте:

 git clone https://github.com/stedolan/jq.git
компакт-диск JQ
автореконф -я
./configure --disable-maintainer-mode
делать
судо сделать установить
 

Чтобы собрать его из клона git, вам нужно установить несколько пакеты сначала:

  • GCC
  • Сделать
  • Автоинструменты

Для систем Linux все это будет в пакете вашей системы менеджер, и если вы делаете разработку на машине, они больше всего скорее всего уже установлен.

В OS X все они включены в инструменты командной строки Apple, которые могут быть установлен из Xcode. Однако, вы можете обнаружить, что вам нужна более новая версия Bison, чем предоставленная Apple. Это можно найти в Homebrew или MacPorts.

Флаг --disable-maintainer-mode указывает на использование предварительно сгенерированного лексера и парсер, который поставляется с кодом. Для компиляции лексера и парсера также из источника, оставьте этот флаг. Вам нужно будет установить Flex и Бизон.

Создание документации

Документация jq скомпилирована в статический HTML с помощью Python. Чтобы собрать документы, запустите pipenv, запустите python3 build_website.py из документы / подкаталог. Чтобы обслуживать их локально, вы можете запустить python3 -m SimpleHTTPServer . Вам понадобится несколько зависимостей Python, который можно установить, следуя инструкциям в docs/README.md .

Справочная страница создается с помощью make jq.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *