Converting JSON pretty print to one line
You should use jq for stuff like that:
jq -c . input.txt
An alternative quick a dirty solution would be to use sed
& tr
:
sed -e 's/^ *//' < input.txt | tr -d '\n'
although I would recommend using jq
which is designed for manipulating JSON. jq
is like sed
for JSON. Manipulating JSON textually with sed
/awk
/etc is not guaranteed to produce semantically equivalent JSON.
jq
or any other json
aware tool is best suited for json file manipulation.However here is awk
based solution.
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": {} }
Note: This solution is mainly for the legacy systems not having tools like jq
and have no chance to get them installed due to some reasons.