Vous devriez utiliser jq pour des trucs comme ça :
jq -c . input.txt
Une alternative rapide à une solution sale serait d'utiliser sed
&tr
:
sed -e 's/^ *//' < input.txt | tr -d '\n'
bien que je recommanderais d'utiliser jq
qui est conçu pour manipuler JSON. jq
est comme sed
pour JSON. Manipulation textuelle de JSON avec sed
/awk
/etc n'est pas garanti pour produire du JSON sémantiquement équivalent.
jq
ou tout autre json
l'outil conscient est le mieux adapté à la manipulation de fichiers json. Cependant, voici awk
solution basée.
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": {} }
Remarque :Cette solution est principalement destinée aux systèmes hérités ne disposant pas d'outils tels que jq
et n'ont aucune chance de les installer pour certaines raisons.