h.b*_*h.b 10 linux bash awk json sed
我有一个运行的命令,它给出了如下输出:
{
"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": {}
}
Run Code Online (Sandbox Code Playgroud)
我需要输出如下所示:
{"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":{}}
Run Code Online (Sandbox Code Playgroud)
我尝试使用awk和sed结合不同的参数,但我无法在不丢失JSON格式的情况下开始工作.
red*_*neb 12
你应该使用jq这样的东西:
jq -c . input.txt
Run Code Online (Sandbox Code Playgroud)
另一种快速的脏解决方案是使用sed&tr:
sed -e 's/^ *//' < input.txt | tr -d '\n'
Run Code Online (Sandbox Code Playgroud)
虽然我建议使用jq哪个是专为操纵JSON而设计的.jq就像sedJSON一样.使用sed/ awk/ etc以文本方式操作JSON 不能保证生成语义上等效的JSON.
jq或任何其他有json意识的工具最适合json文件操作。但这是awk基于解决方案的。
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": {} }
Run Code Online (Sandbox Code Playgroud)
注意:此解决方案主要用于那些没有类似工具jq且由于某些原因而无法安装它们的旧系统。
| 归档时间: |
|
| 查看次数: |
10082 次 |
| 最近记录: |