170 похожих чатов

Вопрос не совсем Go, а скорее bash; но вообще вопрос

технологии открыт.
Кто-то подскажет, как можно кроме вот варианта по ссылке https://www.starkandwayne.com/blog/bash-for-loop-over-json-array-using-jq/
в bash пройтись по подмассиву из файла JSON и вывести определенные поля сущностей?
Решение по ссылке работает, но очень уж долго - занимает почти минуту для JSON на 3 мегабайта.

11 ответов

9 просмотров

Скрипт по ссылке заново парсит json на каждой итерации, проще всего наверное переписать скрипт на язык где можно распарсить json один раз и потом адресовать массив, например на го/питон

Elmanov-Anton Автор вопроса
jit.js
Скрипт по ссылке заново парсит json на каждой итер...

По идее на каждой итерации делается base64 decode и парсинг маленького куска, верно? странно что столько времени отнимает. Да, на го, конечно все залетало бы, но чтобы бинарь туда поставить, придется помучаться. Вообще дело происходит в azure devops, поэтому тоже смотрю на python - он там из коробки поддерживается наравне с bash.

А вы уверены, что вам надо через base64 прогонять все?

Elmanov-Anton Автор вопроса

я не уверен, но если это убрать, то вывод jq -r '.[]' будет в виде исходного json, даже с ключом -с, который вроде гарантирует приведение к однострочному режиму. цикл for row in запускается на каждую строку вывода jq, а так вывод многострочный, то получается работа не с цельными json-сущностями, а с их фрагментами - это практически бесполезно

Elmanov-Anton Автор вопроса

похоже дело не в строках, а в чем-то еще - выглядит, что jq выводит именно по 1 строке, но for с его результатами оперирует уже фрагментами строк

поставить себе консольную утилиту для работы с json какой-нить fx или jq ну или еще какую - их, в общем-то, довольно много

Elmanov-Anton Автор вопроса
Elmanov Anton
похоже дело не в строках, а в чем-то еще - выгляди...

Удалось избавиться от base64. Надо было отключить цветность вывода jq и также добавил его построчное чтение через read -r. cat 2.json | jq -M --compact-output -r '.[]' | while read -r line; do echo $failcount $line done так работает терпимо по времени

Elmanov-Anton Автор вопроса
Владимир Гришин
Сделайте что-то вроде jq [items[].name]

ларчик просто открывался. не хватило опыта сообразить, что и в самом jq есть и фильтр и формат вывода: cat 1.json | jq -M -r '.Results[0].Vulnerabilities[] | select(.Severity == "CRITICAL") | "\(.Title) \(.PrimaryURL) \(.Severity)"'

Отдельная структура, из интерфейса кастите и в неё это самое...

Elmanov-Anton Автор вопроса
🎄 Doe
Отдельная структура, из интерфейса кастите и в неё...

спасибо, jq как оказалось умеет все что нужно - и отфильтровать и вывести в нужном формате

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

Обсуждают сегодня

Вопрос по организации кода. Пилю свой велосипед логгер Есть у меня множество уровней сообщений. Я набрасываю сообщения в стринглист, а когда они нужны, вызываю их через функц...
Serjone
21
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
всем вопрос. есть функция, которая иногда в линуксе валится с исключением EConvertError Invalid argument to date encode на строке Result:=LocalToUtcDateTime(FileDateToDateTime...
Handatros
9
И из-за этого сужается карман. Нет свободного полёта. Они либо могут какой-то заточенный прикладной софт, либо какой-то простой системный написать. По шаблону. А, допустим, по...
КТ315
9
Всем привет! Подскажите, как решить проблему или из-за чего это происходит. У меня есть проблема в WebStorm (v.2024.1.3): я ставлю любую тему, и через какое-то время меняется ...
Alexander Sheigov
12
А с каким компилятором не будет ошибкой использовать асм вставки?
Replicant ~
14
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Он сокет писал?
Alexey
9
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Карта сайта