shell jq 处理 json 文件

#!/bin/bash
rm -rf log.txt
echo "--------远程脚本日志----------"  >> log.txt
date >> log.txt
[ -e cms.json ] && rm -rf cms.json
[ -e poi.json ] && echo "存在poi.json,开始转换"   
[ ! -e poi.json ] && echo "当前目录下没有poi.json。请检查目录"  && exit
name=(`cat poi.json  | jq 'keys' | awk 'NR>2{print p}{p=$0}'  | sed 's/\,//g' | sed 's/^[ \t]*//g'`)
echo "点位信息: ${name[*]}" >> log.txt
a_number=${#name[*]}
echo "点位数量: ${#name[*]}" >> log.txt
" "\n" >  new_tts.txt
[ ! -e tts.txt ] && echo "tts文件不存在" >> log.txt
tts_num=`sed -n '$=' new_tts.txt`
echo "tts数量: $tts_num" >> log.txt
[ $tts_num -ne $a_number ] && echo "tts行数不正确,请检查" >> log.txt
i=0
while [ $i -lt $a_number ]
do
key=${name[$i]}
x_point[$i]=`cat /opt/poi.json |  jq ".$key.x"`
y_point[$i]=`cat /opt/poi.json |  jq ".$key.y"`
yaw_point[$i]=`cat /opt/poi.json |  jq ".$key.yaw"`
let i++
done
point=(A B C D E F G H I G K L M N O P Q R S T U V W X Y Z)
j=0
while [ $j -lt $a_number ]
do
t=$[j+1]
p=${point[j]}
x=${x_point[j]}
y=${y_point[j]}
yaw=${yaw_point[j]}
n=`sed -n $t\p new_tts.txt`
cat >> /opt/cms.json << EOF
"param": {
                "name": "GoToPoint$p",
                "position": "$x,$y,$yaw",
                "tts": "$n",
                "img": "",
                "video": "",
                "delay": "",
                "timeout": "",
                "sort": "",
                "type": "0"
        }
}, {
EOF
echo "---------------" >> log.txt
echo "点位对应关系:  $p ----  ${name[j]}" ---x:$x-y:$y-yaw:$yaw   >> log.txt
let j++
done
sed -i '1i\[{' cms.json
sed -i '$a\}]' cms.json
rm -rf poi.json
rm -rf new_tts.txt
rm -rf tts.txt
echo "转换完成"  >> log.txt

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值