#!/usr/bin/env bash awk ' BEGIN { printf("[\n") } /^\| / { printf("{\n"); gsub(/^\| /, ""); if (!($0 ~ /^<.*/)) { printf(" \"ip\": \"%s\",\n", $0); } getline gsub(/^\| /, ""); printf(" \"host\": \"%s\",\n", $0); getline gsub(/^\|( |$)/, ""); gsub(/\[.*\]$/, ""); printf(" \"archive\": \"%s\"", $0); getline getline getline gsub(/^\| ?/, ""); gsub(/\[.*\]$/, ""); if ($0) { printf(",\n \"comms\": \"%s\"\n", $0); } else { printf("\n"); } getline getline printf("},\n"); } ' "$@" | sed '$ s/.$//' printf ']'