Deberías usar jq para cosas como esa:
jq -c . input.txt
Una solución rápida y sucia alternativa sería usar sed
&tr
:
sed -e 's/^ *//' < input.txt | tr -d '\n'
aunque recomendaría usar jq
que está diseñado para manipular JSON. jq
es como sed
para JSON. Manipulando JSON textualmente con sed
/awk
No se garantiza que /etc produzca JSON semánticamente equivalente.
jq
o cualquier otro json
La herramienta consciente es la más adecuada para la manipulación de archivos json. Sin embargo, aquí está awk
solución basada.
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:esta solución es principalmente para los sistemas heredados que no tienen herramientas como jq
y no tengo la oportunidad de instalarlos debido a algunas razones.