Anda harus menggunakan jq untuk hal-hal seperti itu:
jq -c . input.txt
Alternatif cepat solusi kotor adalah dengan menggunakan sed
&tr
:
sed -e 's/^ *//' < input.txt | tr -d '\n'
meskipun saya akan merekomendasikan menggunakan jq
yang dirancang untuk memanipulasi JSON. jq
seperti sed
untuk JSON. Memanipulasi JSON secara tekstual dengan sed
/awk
/etc tidak dijamin menghasilkan JSON yang setara secara semantik.
jq
atau json
lainnya alat sadar paling cocok untuk manipulasi file json. Namun di sini ada awk
solusi berbasis.
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": {} }
Catatan:Solusi ini terutama untuk sistem lawas yang tidak memiliki alat seperti jq
dan tidak memiliki kesempatan untuk menginstalnya karena beberapa alasan.