郭玉超

Shell处理Json

2019-07-02 Views 路由器 2 min read            
 

OpenWrt的jshn.sh处理数字会自动加0,jsonfilter和自写函数parse_json都可以解决此问题。

#!/bin/sh
. /usr/share/libubox/jshn.sh
json_init

function parse_json()
{
    echo $1 | \
    sed -e 's/[{}]/''/g' | \
    sed -e 's/", "/'\",\"'/g' | \
    sed -e 's/" ,"/'\",\"'/g' | \
    sed -e 's/" , "/'\",\"'/g' | \
    sed -e 's/","/'\"---SEPERATOR---\"'/g' | \
    awk -F=':' -v RS='---SEPERATOR---' "\$1~/\"$2\"/ {print}" | \
    sed -e "s/\"$2\"://" | \
    tr -d "\n\t" | \
    sed -e 's/\\"/"/g' | \
    sed -e 's/\\\\/\\/g' | \
    sed -e 's/^[ \t]*//g' | \
    sed -e 's/^"//'  -e 's/"$//'
}


jd='{"mcid":1,"pid":"","errorcode":"0","status":0,"info":{"filename":"b11.2.tar.gz","version":1.20}}'

aaa=`jsonfilter -s $jd -e @.info.version`
echo 'aaa:'$aaa

echo 'ver1:'` parse_json $jd version`

json_load "$jd"
json_select info
json_get_var version version

echo 'version:'$version



本文由郭玉超创作
该文章采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。转载请注明出处!
发布时间为:2019-07-02

支付宝扫码打赏 微信打赏
如果觉得这篇文章对您有帮助,可以请作者喝一杯饮料哦🥤