Я искал довольно специфическую функцию, которая может отсутствовать в jq
. Если вы знаете, что его там нет, я был бы признателен за любезное уведомление и некоторое предложение решить эту проблему.JQ: Функция FLATTEN типа PigLatin
Я обрабатываю общественность dataset. Мне удалось уменьшить данные в следующем формате строки:
[field1,field2,field3,[author1,...,authorN],[author_type1,...,author_typeN]]
Команда Баш Я использую, чтобы добраться до этого формата заключается в следующем:
find aps-dataset-metadata_subdir_path/ -name '*.json' | \
xargs cat | \
jq --compact-output \
'select(.authors != null) | [.identifiers.doi, .date, .journal.id, [.authors[].name], [.authors[].type]]'
Обратите внимание, что authorN
и author_typeN
в тот же объект (т. е. имеющий один и тот же родительский элемент) в необработанных данных.
Я искал способ, чтобы произвести от каждого из них линия следующего:
[field1,field2,field3,author1,author_type1]
[field1,field2,field3,author2,author_type2]
...
...
[field1,field2,field3,authorN,author_typeN]
Функция сплющивается в jq
, кажется, уровень уплощения без создания новых списков. Если кто-то из вас знает PigLatin, я хочу, чтобы именно оператор PigLatin built-in Flatten.
Опять же, я знаю, что он не реализован в jq
. В этом случае, вероятно, я выложу пост-обработку вывода в Python
или любой другой потрясающий способ, который вы, ребята, предлагаете в ответах.
спасибо!