захватить параметр и значение из нескольких файлов

с помощью awk:

awk '{line1=$0; getline line2; getline line3; print line1, line3, line2}' file
0
25.12.2019, 01:36
1 ответ

С jqверсии 1.5+

jq -r '.partitions[] | "\(input_filename) topic=\(.topic)"' total_machines-*.json

С модулем Perl JSON:

perl -MJSON -0777 -nE '
  $h = decode_json($_); say "$ARGV topic=$h->{partitions}[0]{topic}"
' total_machines-*.json

С Миллером с использованием исходящего -массива потоков -, индексированного текущим именем файла. Обратите внимание, что Миллер в настоящее время сглаживает массивы JSON в карты с целочисленным -ключом, но, поскольку ваши файлы содержат только один элемент в каждом массиве partitions, это не является серьезным ограничением в данном случае -, это действительно не хуже, чем полагаться на данных, находящихся в элементе [0]в perl-версии.

mlr --ijson --onidx put -S -q '
  @value[FILENAME] = "topic=".${partitions:0:topic}; end {emit @value, "a"}
' total_machines-*.json
1
28.01.2020, 02:38

Теги

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