Dovresti usare jq per cose del genere:
jq -c . input.txt
Una soluzione alternativa rapida e sporca sarebbe usare sed &tr :
sed -e 's/^ *//' < input.txt | tr -d '\n'
anche se consiglierei di usare jq progettato per manipolare JSON. jq è come sed per JSON. Manipolare JSON testualmente con sed /awk Non è garantito che /etc produca JSON semanticamente equivalente.
jq o qualsiasi altro json consapevole è più adatto per la manipolazione di file json. Tuttavia, qui c'è awk soluzione basata.
awk -v RS= '{$1=$1}1' input.json
{ "endpointApplications": { "App_Name": { "connectionState": "Disconnected", "connectionTime": "No connection was established", "linkAttributes": { "ackSettings": { "dataAckEnabled": "true", "dataAckTimeout": "5000", "dataNakRetryLimit": "0", "retransmitDelay": "500" }, "keepAliveSettings": { "keepAliveAckTimeout": "5000", "keepAliveInterval": "30000" }, "logTraffic": "false", "port": "9999", "role": "server" }, "protocol": "snmp" } }, "queueStats": {} }
Nota:questa soluzione è principalmente per i sistemi legacy che non dispongono di strumenti come jq e non ho alcuna possibilità di installarli a causa di alcuni motivi.