shell實現數據json格式轉換


redis中按hash格式存放的數據,轉換到json格式

例子1:

redis內數據格式
test1
"dbname=test1|username=db2inst3|passwd=db2inst3|ip=192.168.1.61|port=60004|" bmw "dbname=bmw|username=db2inst3|passwd=db2inst3|ip=192.168.1.113|port=50000|" test2 "dbname=test2|username=db2inst3|passwd=db2inst3|ip=192.168.1.113|port=50000|"
shell:
awk 'BEGIN{printf "["}' echo "hgetall SrcLogInfo " | ../redis | while read line do strA="|" #num=echo ${line | wc -c} awk 'BEGIN{printf "{"}' ret=\"$line\" echo ${ret} result=$(echo $line | grep "${strA}") if [ -n "$result" ]; then awk 'BEGIN{printf "},"}' else awk 'BEGIN{printf ":"}' fi done awk 'BEGIN{printf "]"}'
轉換結果為:json格式
[{
        "test1": "dbname=test1|username=db2inst3|passwd=db2inst3|ip=192.168.1.61|port=60004|"
    },
    {
        "bmw": "dbname=bmw|username=db2inst3|passwd=db2inst3|ip=192.168.1.113|port=50000|"
    },
    {
        "test2": "dbname=test2|username=db2inst3|passwd=db2inst3|ip=192.168.1.113|port=50000|"
    }
]

 

例子2:

redis存的數據格式:
1) "db2inst1"
2) "{\"serverip\":\"192.168.1.113\",\"dbip\":\"192.168.1.225\",\"dbport\":\"50000\",\"nodename\":\"node225\",\"dbname\":\"db2_10\",\"dbaliname\":\"db2inst1\",\"instname\":\"db2inst1\"}"
3) "fea"
4) "{\"serverip\":\"192.168.1.113\",\"dbip\":\"192.168.1.225\",\"dbport\":\"50000\",\"nodename\":\"node225\",\"dbname\":\"db2_10\",\"dbaliname\":\"fea\",\"instname\":\"db2inst1\"}"
5) "bmw"
6) "{\"serverip\":\"192.168.1.113\",\"dbip\":\"192.168.1.61\",\"dbport\":\"60004\",\"nodename\":\"node61\",\"dbname\":\"test1\",\"dbaliname\":\"bmw\",\"instname\":\"db2inst3\"}"
shell:
awk 'BEGIN{printf "["}' echo "hgetall catainfo " | ../redis| while read line do i=$(($i+1)) if [[ $(($i%2)) -eq 0 ]];then printf $line, fi done awk 'BEGIN{printf "]"}'

//最后格式就不展示了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM