首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将输出表转换为JSON

将输出表转换为JSON
EN

Stack Overflow用户
提问于 2018-05-23 07:10:36
回答 1查看 133关注 0票数 3

我需要在JSON中格式化默认的Accel-PPP输出,但我不是一个有经验的程序员,我想要一个有效的命令来获得处理时间。我找到了这个链接https://unix.stackexchange.com/questions/243484/how-do-i-convert-the-output-of-ps1-to-json。但默认输出与上面的链接不同,如下所示:

代码语言:javascript
复制
  ifname  | username |    calling-sid    | rate-limit  
----------+----------+-------------------+-------------
 pppoe0   | joao     | EC:22:80:A2:5E:D5 | 10240/1024  
 pppoe2   | pedro    | C0:4A:00:88:E5:29 | 5120/1024   
 pppoe4   | maria    | B0:4E:26:B1:75:7D | 5120/1024 

我希望它看起来像这样:

代码语言:javascript
复制
  [  
   {  
      "username":"joao",
      "data":{  
         "ifname":"pppoe0",
         "calling-sid":"EC:22:80:A2:5E:D5",
         "rate-limit":"10240/1024"
      }
   },
   {  
      "username":"pedro",
      "data":{  
         "ifname":"pppoe2",
         "calling-sid":"C0:4A:00:88:E5:29",
         "rate-limit":"5120/1024"
      }
   },
   {  
      "username":"maria",
      "data":{  
         "ifname":"pppoe4",
         "calling-sid":"B0:4E:26:B1:75:7D",
         "rate-limit":"5120/1024"
      }
   }
]
EN

回答 1

Stack Overflow用户

发布于 2019-02-12 19:11:53

我编写了一个小shell脚本,将其打印为JSON格式:

代码语言:javascript
复制
#!/bin/bash

# Script to convert output of accel-cmd to JSON format
# Author: lfelipe
# Since: 2019-02-12

# Return of accel-cmd
ACCEL_RETURN=$(accel-cmd show sessions username,ifname,calling-sid,rate-limit,state | grep -v 'calling-sid' | grep -v '+-----' | sed 's/ //g')

# To save JSON format in string
JSON="["

# Delimiter of for
OLD_IFS=$IFS
IFS=$'\n'

# For each result
for USER in $ACCEL_RETURN
do
        USERNAME=`echo  ${USER} | cut -d '|' -f 1`
        IFNAME=`echo    ${USER} | cut -d '|' -f 2`
        SID=`echo       ${USER} | cut -d '|' -f 3`
        RATE=`echo      ${USER} | cut -d '|' -f 4`

        JSON+='{'

        JSON+='"username":"'${USERNAME}'",'

        JSON+='"data":{'
        JSON+='"ifname":"'${IFNAME}'",'
        JSON+='"calling-sid":"'${SID}'",'
        JSON+='"rate-limit":"'${RATE}'"'
        JSON+='}'
        JSON+='},'

done

# Default delimiter
IFS=$OLD_IFS

JSON+="]"

#Remove the last comma
JSON=`echo ${JSON%,*} ${JSON##*,}`

# Print JSON in string
echo "$JSON"

exit

在jsonlint中进行了CentOS 6.9测试和验证

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50477656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档