I have a command that I run and it gives an output like below:
{
\"endpointApplications\": {
\"App_Name\": {
\"connectionState\": \"Disconnected\",
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.
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.