Linux jq поиск по атрибуту

Обновлено: 05.07.2024

Спецификация CSS позволяет выбирать элементы по их атрибутам. Некоторые старые браузеры не поддерживают такие селекторые, но JQuery позволяет использовать их независимо от используемого браузера.

Так как эти селекторы увидеть значения атрибутов в качестве одной строки, этот селектор

При использовании любого из следующих селекторов атрибутов, Вы должны учитывать атрибуты, которые имеют несколько, разделенных пробелами значений. Так как эти селекторы видят значения как целые строки, например селектор $("a[rel='nofollow']") выберет <a href="example.html" rel="nofollow">Какой то текст</a> но не <a href="example.html" rel="nofollow foe">Какой то текст</a> .

Значения атрибутов в выражениях селекторов должны следовать правилам W3C CSS селекторов; в целом, это означает что ничего кроме действительных идентификаторов должны быть окружены кавычками.

  • двойные кавычки внутри одинарных кавычек: $('a[rel="nofollow self"]')
  • одинарные кавычки внутри двойных кавычек: $("a[rel='nofollow self']")
  • Экранированные одинарные кавычки внутри одинарных кавычек: $('a[rel=\'nofollow self\']')
  • Экранированные двойные кавычки внутри двойных кавычек: $("a[rel=\"nofollow self\"]")

Какой вариант использовать это Ваш выбор.

Важно: В jQuery 1.3 [@attr] селекторы были удалены (они были отмечены как устаревшие в jQuery 1.2). Просто удалите символ "@" из Ваших селекторов, чтобы заставить их вновь работать.

Селектор по значению атрибута [name=”value”]

Соответствует всем элементам с атрибутом attribute равным value. Если value состоит из нескольких слов, между которыми есть пробелы, то нужно заключать value в кавычки. Если value не содержит пробелов — кавычки не обязательны.

Селектор по концу атрибута [name$=”value”]

Соответствует всем элементам, у которых значение атрибута attribute заканчивается на value. Если value состоит из нескольких слов, между которыми есть пробелы, то нужно заключать value в кавычки. Если value не содержит пробелов — кавычки не обязательны.

Селектор по наличию атрибута [name]

Соответствует всем элементам, которые имеют атрибут attributeName. При этом, не важно, какие им заданы значения.

Селектор по началу атрибута [name^=”value”]

Соответствует всем элементам, у которых значение атрибута attribute начинается с value. Если value состоит из нескольких слов, между которыми есть пробелы, то нужно заключать value в кавычки. Если value не содержит пробелов — кавычки не обязательны.

Селектор по нескольким атрибутам [name=”value”][name2=”value2″]

Соответствует элементам, удовлетворяющим всем заданным условиям на атрибуты (first, second, . ).

Селектор по несовпадению с атрибутом [name!=”value”]

Соответствует всем элементам, у которых значение атрибута attribute не равно value. Если value состоит из нескольких слов, между которыми есть пробелы, то нужно заключать value в кавычки. Если value не содержит пробелов — кавычки не обязательны.

Селектор по подстроке в элементе [name*=”value”]

Соответствует всем элементам, у которых значение атрибута attribute содержит value. Если value состоит из нескольких слов, между которыми есть пробелы, то нужно заключать value в кавычки. Если value не содержит пробелов — кавычки не обязательны.

Селектор по префиксу элемента [name|=”value”]

Соответствует всем элементам, с атрибутом attribute содержащим префикс value, т.е. либо полностью совпадает с value, либо начинается со строки value- (наличие знака переноса существенно). Если value состоит из нескольких слов, между которыми есть пробелы, то нужно заключать value в кавычки. Если value не содержит пробелов — кавычки не обязательны.

Селектор по слову в атрибуте [name

Соответствует всем элементам с атрибутом attribute, содержащим слово value (именно слово, а не просто подстроку. То есть вхождение value должно содержать с обоих сторон разделители: пробелы или начало/конец строки). Если value состоит из нескольких слов, между которыми есть пробелы, то нужно заключать value в кавычки. Если value не содержит пробелов — кавычки не обязательны.

  • Ajax
    • Глобальные Ajax события
    • Вспомогательные методы
    • Низкоуровневый интерфейс
    • Сокращенные методы
    • Базовые
    • Пользовательские
    • Затухание
    • Скольжение
    • События браузера
    • Загрузка документа
    • Прикрепление обработчиков
    • Объект событие
    • События формы
    • События клавиатуры
    • События мыши
    • Class атрибут
    • Копирование
    • DOM Вставка вокруг
    • DOM Вставка внутрь
    • DOM Вставка вне
    • DOM Удаление
    • DOM Замена
    • Общие аттрибуты
    • Свойства стилей
    • Манипуляция коллекциями
    • Хранилище данных
    • DOM методы элементов
    • Методы установки
    • Экземпляр объекта jQuery
    • Глобальный объект jQuery
    • Атрибут
    • Базовые
    • Базовые фильтры
    • Фильтры потомков
    • Фильтры содержимого
    • Форма
    • Иерархия
    • jQuery расширение
    • Фильтр видимости
    • Фильтрация
    • Обход
    • Обход элементов
    • Версия 1.3
    • Версия 1.7
    • Версия 1.8
    • Версия 1.9
    • Версия 1.10
    • Версия 3.0

    Русская документация по jQuery.
    При использовании любых материалов с сайта ссылка на сайт обязательна.

    Инженеры фоновой разработки часто разрабатывают под Linux. Когда мы получаем данные в формате json, как эффективно проанализировать эти данные? Мы можем использовать python в сочетании с библиотекой json для анализа, но у linux есть очень полезный инструмент, который позволяет нам легко обрабатывать текст json с очень мощными функциями.

    скачать

    использование

    подготовка данных

    jq может выводить текст json в читаемую форму. Я подготовил тестовые данные json следующим образом:

    Я использую библиотеку json в Python для обработки ее в виде строки следующим образом:

    Этот формат является форматом, который мы часто видим в реальной работе. Например, мы используем curl для запроса интерфейса и возвращаем json. Например, мы проверяем вывод данных json в нашем проекте. Этот формат часто менее читабелен. Нам нужно обработать его, прежде чем мы сможем его увидеть.

    использование

    Чтобы преобразовать в удобную для чтения форму перед обработкой Python, выполните:


    Вывод

    jq преобразует данные в простой для чтения формат, а также добавляет инструкции по выделению цветов, где ключ и значение используют разные цвета.

    Если данные json большие, мы хотим видеть только одно из данных поля, а затем использовать следующий синтаксис:


    тестовое задание

    Когда поле является списком, jq может разрезать его


    тестовое задание

    Нарезка поддерживает несколько форматов на рисунке, обратите внимание на отличие от нарезки списка Python.

    Различая два типа '.skills' и '.skills []', вы можете видеть, что выходные данные первого - это список, а последний - член списка в формате, отличном от json.

    Подробное использование

    Предыдущий раздел был jq Общее использование, здесь объясняет конкретный принцип JQ.

    jq получает ввод текста из конвейера или файла linux. Если текст не соответствует формату json, jq сообщит об ошибке. Вы можете использовать этот метод, чтобы проверить, соответствует ли текст проверке json:

    jq использует фильтр для обработки текста в формате json и выводит отфильтрованное содержимое на стандартный вывод. filter используется для фильтрации полей, отвечающих потребностям, таких как простейший фильтр '.' , Это означает отсутствие стратегии фильтрации, поэтому будет выводиться весь текст json.

    key filter

    Отфильтруйте имена полей, которые соответствуют ключу, и выведите значение ключа.

    key-value filter


    Выведите ключ и значение, отличите фильтр ключа следующим образом

    Поскольку значение ключа должно принадлежать объекту, добавьте внешний слой <>.

    index filter

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

    Вложенный фильтр уровня

    Используется для вложенного фильтра данных JSON.

    Несколько фильтров

    Используйте английскую однобайтовую запятую для разделения фильтра, который используется для фильтрации нескольких полей в фильтре.

    фильтр трубопровода

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

    Вывод данных после реорганизации фильтра
    Иногда нам нужно реконструировать структуру json, например, удалить определенный уровень вложенности, например взять несколько полей для формирования нового json, в это время нам нужно изменить структуру json, Мы можем использовать [] с <> Реорганизовать JSON.


    тестовое задание


    тестовое задание

    Рекурсивно расширить структуру JSON
    Иногда нам нужно найти поле в json, но мы не знаем, в каком вложении находится это поле. Если вложение глубокое, его трудно найти. jq может поместить вложение Найти после разворачивания и выравнивания.


    тестовое задание

    После расширения объедините конвейер и снова отфильтруйте, чтобы найти ключ.

    length filter
    Вычисляет длину элемента. Для объектов длина представляет количество элементов в объекте, для строки длина представляет количество строковых символов, а для списков - количество элементов списка.


    тестовое задание


    keys filter
    вывод всех ключей, форма списка
    тестовое задание

    Проверьте, существует ли ключ
    Если вход является объектом, то элементы объекта существуют в форме «ключ-значение», используйте

    Проверьте, содержит ли объект json ключ.

    Обход списка
    jq поддерживает использование map () или map_values ​​() для обхода списка или значения объекта.


    тестовое задание

    Удалить ключ

    Используйте del () для удаления значения ключа, описанного фильтром.

    понять больше

    В предыдущем разделе объяснялись только наиболее часто используемые функции jq. На самом деле, jq имеет более практичные фильтры. Если вышеупомянутые функции не отвечают вашим потребностям, вы можетеJQ адрес проектаНайти подробные инструкции по.

    Выполните следующую команду, чтобы установить jq в Ubuntu.


    Чтение данных JSON

    Предположим, вы объявили переменную JSON с именем JsonData в терминал и запустите команду jq с этой переменной, чтобы распечатать содержимое этой переменной.


    Чтение данных JSON с параметром –c

    Параметр -c используется с командой jq для печати каждого объекта JSON в каждой строке. После выполнения следующей команды будет напечатан каждый объект переменной JsonData.

    Чтение файла JSON

    Команда jq может использоваться для чтения Также файл JSON. Создайте файл JSON с именем Student.json со следующим содержимым, чтобы протестировать следующие команды этого руководства.

    Students.json

    Выполните следующую команду, чтобы прочитать файл Students.json.



    Чтение одиночных значений ключа

    Вы можете легко прочитать любой конкретный объект из файла JSON с помощью команды jq . У студентов . json , есть четыре объекта. Это список, название, партия и отдел . Если вы хотите прочитать значение ключа Department только из каждой записи, запустите команду jq следующим образом.


    Чтение нескольких ключей

    Если вы хотите прочитать два или более значений объекта из данных JSON, укажите имена объектов, разделив их запятыми (,) в команде jq. Следующая команда получит значения ключей name и Department .


    Удалить ключ из данных JSON

    jq . Команда используется не только для чтения данных JSON, но и для отображения данных удаление конкретного ключа. Следующая команда распечатает все значения ключей файла Students.json , исключив ключ batch . map и функция del используются в команде jq для выполнения задачи.


    Значения сопоставления

    Не удаляя ключ из данных JSON, вы можете использовать функцию сопоставления с командой jq для различного назначения. Числовые значения данных JSON могут быть увеличены или уменьшены функцией карты. Создайте файл JSON с именем Number.json со следующим содержимым для проверки следующих команд.

    Выполните следующую команду, чтобы добавить 10 к каждому значению объекта Numbers, json .


    Выполните следующую команду, чтобы вычесть 10 из каждого значения объекта Numbers, json .


    Поиск значений по индексу и длине

    Вы можете читать объекты из файла JSON, указав конкретный индекс и длину. Создайте файл JSON с именем colors.json со следующими данными.

    Выполните следующую команду, чтобы прочитать два значения, начиная с третьего индекса файла colors.json.


    Вы можете указать длину или начальный индекс для чтения данных из файла JSON. В следующем примере дается только количество значений данных.. В этом случае команда прочитает четыре данных из первого индекса файла colors.json.


    Вы можете указать только начальную точку без какого-либо значения длины в jq и значение может быть положительным или отрицательным. Если начальная точка положительна, индекс будет отсчитываться с левой стороны списка, начиная с нуля. Если начальная точка отрицательная, то индекс будет отсчитываться с правой стороны списка, начиная с единицы. В следующем примере начальная точка равна -3. Итак, будут отображены последние три значения из данных.


    Когда вы будете работать с данными JSON и хотите анализировать или обрабатывать данные в соответствии с вашими требованиями тогда команда jq поможет вам упростить задачу.


    Слово JSON означает JavaScript Object Notation, хотя оно начинается с JavaScript и в основном используется для обмена данными между сервером и браузером, но в настоящее время используется во многих областях, включая встроенные системы.

    Здесь мы собираемся проанализировать и вывести JSON с помощью инструментов командной строки в Linux.

    Это чрезвычайно полезно для обработки больших данных JSON в скриптах оболочки или для управления данными JSON в скриптах оболочки.

    Что такое красивый вывод json?

    Данные JSON структурированы так, чтобы быть более удобочитаемыми для человека.

    Однако в большинстве случаев данные JSON хранятся в одной строке, даже без символа окончания строки.

    Очевидно, что это не очень удобно для чтения и редактирования вручную.

    Вот тогда красивый вывод полезен.

    Название самоочевидно, переформатировать текст JSON, чтобы он было более читабельным для людей.

    Данные JSON можно анализировать с помощью текстовых процессоров командной строки, таких как awk, sed и gerp.

    Однако для этой цели есть несколько специализированных инструментов.

    • jq или jshon, JSON-парсер для оболочки, оба они весьма полезны.
    • Скрипты оболочки, такие как JSON.sh или jsonv.sh, для анализа JSON в оболочке bash, zsh или dash.
    • JSON.awk, JSON-анализатор, awk-скрипт.
    • Модули Python, такие как json.tool.
    • underscore-cli, Node.js и на основе JavaScript.

    В этом уроке я сосредоточусь только на jq, довольно мощном парсере JSON для оболочек с расширенными возможностями фильтрации и скриптов.

    JSON понятный вывод

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

    Фактические данные выглядят так:

    Теперь выведем его с помощью JQ:

    Вывод должен выглядеть как показано ниже после фильтрации результата с помощью jq.

    То же самое можно сделать с модулем Python json.tool. Вот пример:

    Это решение на основе Python должно подойти большинству пользователей, но оно не очень полезно, если Python не установлен или не может быть установлен, как во встроенных системах.

    Таким образом, вы можете использовать его без проблем в Windows, Linux или Mac OS.

    Как парсить JSON с jq

    Во-первых, вам нужно установить jq, он уже подхвачен большинством дистрибутивов GNU / Linux, и вы можете установить его с помощью соответствующих команд установщика пакетов.

    На Debian, Ubuntu, Linux Mint:

    Для других ОС или платформ смотрите официальные инструкции по установке.

    Основные фильтры и идентификаторы jq

    jq может читать данные JSON либо из стандартного ввода, либо из файла.

    Вы должны использовать оба в зависимости от ситуации.

    Единый символ это самый простой фильтр.

    Эти фильтры также называются object identifier-index.

    Чтобы отфильтровать определенную часть JSON, вы должны изучить иерархию данных файла JSON.

    Пример данных JSON из Википедии:

    Я собираюсь использовать эти данные JSON в качестве примера в этом учебном пособии, сохранив их как sample.json.

    Допустим, я хочу отфильтровать адрес из файла sample.json. Таким образом, команда должна быть такой:

    Снова допустим, что я хочу почтовый индекс, затем я добавлю еще один object identifier-index, то есть еще один фильтр.

    Читайте также: