как разобрать конкретные значения из множества JSON-объектов в csv с помощью jq

echo $HISTCONTROL
ignoreboth

man bash:

HISTCONTROL

Список значений, разделенных двоеточиями, управляющих сохранением команд в списке истории. Если список значений включает ignorespace , строки, начинающиеся с символа пробела, не сохраняются в списке истории. Значение ignoredups заставляет строки, соответствующие предыдущей записи истории, не сохраняться. Значение ignoreboth является сокращением для ignorespace и ignoredups .

3
02.12.2018, 16:41
3 ответа

Вот jq -единственное решение:

jq -r '[.[].ports[].port ]|@csv' network.json
80,53

Подход здесь заключается в извлечении номеров портов, заключении их в массив и последующем преобразовании в формат CSV.

5
27.01.2020, 21:15

Я смог получить желаемый результат с помощью

jq -r '.[]."ports" |.[].port' 105.105.105.105_tcp.json | tr '\n' ',' | sed 's/,*$//g'

Однако мне интересно, можно ли это сделать более элегантным способом.

0
27.01.2020, 21:15
bash $ jtc -w'<port>l+0' -jr input.json | sed s/[][]//g 
 80, 53 
bash $ 

jtcизвлечет и напечатает все порты и поместит их в массив. sedнеобходимо удалить массивы, заключающие

0
27.01.2020, 21:15

Теги

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