с помощью awk:
awk '{line1=$0; getline line2; getline line3; print line1, line3, line2}' file
С 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