#!/usr/bin/env -S awk -f BEGIN { FS=": " prev_empty=1 t=" " print "[ {" } !NF { # empty line, update separator so next non empty line closes the dict prev_empty=1 t="},\n{ " next # skip line (we won't match anything else) } { printf t "\"%s\" : \"%s\"\n", $1, $2 if (prev_empty) { # we were the first after a group of empty lines, following ones have to # have a comma prev_empty=0 t=", " } } END { print "} ]" }