Linux下使用awk在接口后直接解析json数据

curl -g 'http:/10.111.11.111:11111/api/v1/query?query=cpu'|jq -c .data.result[]|awk -F '"' '{print  "cpu\t" $(NF-9) "\ttime\t" $(NF-2) $(NF-1)}' | awk -F: '{print $1,$2}'|awk -F, '{print $1,$2}'|awk -F '[\t.]' '{print "type:" $1 ",region:shk1,name:" $2 "," $3 ":" strftime("%Y-%m-%d",$4) "," $5 ":" $6 "\t"}'  >>collect.txt

取倒数1、2、9列以"为分隔符

awk -F '"' '{print  "cpu\t" $(NF-9) "\ttime\t" $(NF-2) $(NF-1)}'

接着以:为分隔符,取第一列、第二列

 awk -F: '{print $1,$2}'

以\t和.分割加上需要的字段组成键值对,有两个分隔符加上[]example:[\t.]

awk -F: '{print $1,$2}'|awk -F, '{print $1,$2}'|awk -F '[\t.]' '{print "type:" $1 ",region:shk1,name:" $2 "," $3 ":" strftime("%Y-%m-%d",$4) "," $5 ":" $6 "\t"}'

转化unix时间戳(awk ‘BEGIN{print strftime("%Y-%m-%d",systime())}’)

strftime("%Y-%m-%d",$4)

">>"collect.txt输入拼接在文件后面,若无此文件会创建。>则会覆盖

 >>collect.txt

完整的语句则为

curl -g 'http://10.202.150.14:32023/api/v1/query?
query=node_load1'|./jq -c .data.result[]|awk -F '"' 
 '{print "cpu\t"  $(NF-9)  "\ttime\t"  $(NF-2) "\t" $(NF-1)}' 
 |awk -F: '{print $(1),$(2)}'|awk -F[ '{print $(1),$(2)}'|awk -F,
  '{print $(1),$(2)}'|awk -F '\t' '{print   "region:shk1,name:" $2
   "," $3 ":" strftime("%Y-%m-%d %H:%M:%S",$4)  ","$1 ":" $5 }'>> 
   ${directory}/shk1cpu${datetime}.txt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值