как извлечь поля информации из github api с помощью jq

Судя по вашему вопросу, вы ищете /etc/local.conf, однако конфигурация находится внутри /etc/locale.confс конечной "е". Если вы не существуете и у вас есть разрешение на запись на /etc/, то вы можете просто:

echo LANG=en_US.UTF-8 > /etc/locale.conf

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

2
03.03.2021, 13:39
2 ответа

Во всех приведенных ниже случаях file.json— это имя файла, содержащего ваш документ JSON. Очевидно, вы могли бы использовать jq, как вы сделали в вопросе, и прочитать его из канала, подключенного к выходу curl.

Извлечение запрошенных полей по одному:

$ jq -r '.description' file.json
Tmux Plugin Manager
$ jq -r '.language' file.json
Shell

Параметр -rиспользуется выше (и ниже )для получения «необработанных данных», а не данных в кодировке JSON.

При получении обоих сразу (у вас возникнут проблемы с их различением, если какой-либо из них содержит встроенные символы новой строки):

$ jq -r '.language,.description' file.json
Shell
Tmux Plugin Manager

Получение их в виде записи CSV (будет правильно заключено в кавычки, так что встроенные запятые и символы новой строки будут обрабатываться синтаксическим анализатором CSV, а встроенные двойные кавычки также будут закодированы в CSV):

$ jq -r '[.language,.description] | @csv' file.json
"Shell","Tmux Plugin Manager"

Вкладка -с разделителями (встроенные символы новой строки и табуляции будут отображаться как \nи \tсоответственно):

$ jq -r '[.language,.description] | @tsv' file.json
Shell   Tmux Plugin Manager

Разрешение jqсоздавать шелл-код, содержащий два присвоения переменных. Значения будут правильно указаны для оболочки.

$ jq -r '@sh "lang=\(.language)", @sh "desc=\(.description)"' file.json
lang='Shell'
desc='Tmux Plugin Manager'

Заставить оболочку действительно оценивать эти операторы:

$ eval "$( jq -r '@sh "lang=\(.language)", @sh "desc=\(.description)"' file.json )"
$ printf 'lang is "%s" and desc is "%s"\n' "$lang" "$desc"
lang is "Shell" and desc is "Tmux Plugin Manager"
10
18.03.2021, 22:27
  1. How would I extract just the "description"?
$ curl -s 'https://api.github.com/repos/tmux-plugins/tpm' | jq -r '.description'
Tmux Plugin Manager
  1. How do I extract the "language" & "description"?
$ curl -s 'https://api.github.com/repos/tmux-plugins/tpm'
   | jq -r '.language + ": " +.description'
Shell: Tmux Plugin Manager

Предпочтительно, чтобы вторая команда терминала находилась только в одной строке.
Если вы скопируете -и вставите две строки за один раз, попробуйте использовать сдвиг + вставка для вставки в терминал.

Примечание:просто удалите флаг -r, если вы предпочитаете получать ответы в виде строк.

1
18.03.2021, 22:27

Теги

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