快速上手Linux jq命令

2023年 7月 3日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

快速上手Linux  jq命令

jq 是一个轻量级的json处理命令。可以对json数据进行分片、过滤、映射和转换,下面为大家详细讲解一下Linux jq命令使用方法。

安装。

[root@test-dhcp ~]# yum install jq  

使用实例

  1. 创建
[root@test-dhcp ~]# jq -n {a:1}  {   "a": 1  }  [root@test-dhcp ~]# jq -n '{a:"test"}'  {   "a""test"  }  
  1. 合并
[root@test-dhcp ~]# jq -n '{a:"test"} + {b:2}'  {   "a""test",   "b": 2  }  [root@test-dhcp ~]# jq -n '{a:"test"} + {b:2} + {c:"testc"}'  {   "a""test",   "b": 2,   "c""testc"  }  
  1. 删除
[root@test-dhcp ~]# cat test.json  {"a""test","b": 2, "c""testc"}  [root@test-dhcp ~]# cat test.json |jq .  {   "a""test",   "b": 2,   "c""testc"  }  [root@test-dhcp ~]# cat test.json |jq 'del(.b)'  {   "a""test",   "c""testc"  }  
  1. 更新
[root@test-dhcp ~]# cat test.json  {"a""test","b": 2, "c""testc"}  [root@test-dhcp ~]# cat test.json |jq '.b="testb"'  {   "a""test",   "b""testb",   "c""testc"  }  [root@test-dhcp ~]# cat test.json |jq '. + {d:4}'  {   "a""test",   "b": 2,   "c""testc",   "d": 4  }  [root@test-dhcp ~]# cat test.json |jq '. + {d:4}' |jq '.d={dd:5}'  {   "a""test",   "b": 2,   "c""testc",   "d": {     "dd": 5   }  }  
  1. 查询
[root@test-dhcp ~]# cat test.json |jq .  {   "a""test",   "b": 2,   "c""testc",   "d": {     "dd": 5   }  }  [root@test-dhcp ~]# cat test.json |jq '. + {d:4}' |jq '.d={dd:5}' |jq .d.dd  5  [root@test-dhcp ~]# echo '{"a":1,"b":2}' |jq '[.a,.b]'  [   1,   2  ]  
  1. 查看数据类型
[root@test-dhcp ~]# echo "{}" |jq -r type  object  [root@test-dhcp ~]# echo '[0, false, [], {}, null, "hello"]' |jq 'map(type)'  [   "number",   "boolean",   "array",   "object",   "null",   "string"  ]  
  1. 查询数组中的值
[root@test-dhcp ~]# echo [1,2,3] |jq .[1]  2  [root@test-dhcp ~]# echo [1,2,3] |jq .[2]  3  
  1. 查询数组长度
[root@test-dhcp ~]# echo [1,2,3,9] |jq '.|length'  4  [root@test-dhcp ~]# echo [1,2,3] |jq '.|length'  3  
  1. 数组相加
[root@test-dhcp ~]# echo [1,2,3] |jq '. + [4,5,6]'  [   1,   2,   3,   4,   5,   6  ]  
  1. 高级查询
[root@test-dhcp ~]# echo [1,2,3] | jq 'map(select(. >= 2))'  [   2,   3  ]  [root@test-dhcp ~]# echo [1,2,3] | jq 'map(select(. == 2))'  [   2  ]  [root@test-dhcp ~]# echo [1,2,3] | jq 'map(select(. != 2))'  [   1,   3  ]  [root@test-dhcp ~]# cat test.json  [   {     "id""0",     "model""Intel(R)Xeon(R)CPUE5-2620v4@2.10GHz"   },   {     "id""1",     "model""Intel(R)Xeon(R)CPUE5-2620v4@2.10GHz"   }  ]  [root@test-dhcp ~]# cat test.json |jq .[].model  "Intel(R)Xeon(R)CPUE5-2620v4@2.10GHz"  "Intel(R)Xeon(R)CPUE5-2620v4@2.10GHz"  
  1. 类型转换
[root@test-dhcp ~]# echo '["a","b,c,d","e"]' |jq 'join(",")'  "a,b,c,d,e"  [root@test-dhcp ~]# echo '["a","b,c,d","e",1]' |jq 'join(",")'  jq: error (at :1): string (",") and number (1) cannot be added  [root@test-dhcp ~]# cat test.json  liuxin,30,male  jiaweiqiang,29,femal  [root@test-dhcp ~]# jq -R 'split(",")|{"name":.[0],"age":.[1],"sex":.[2]}' ./test.json  {   "name""liuxin",   "age""30",   "sex""male"  }  {   "name""jiaweiqiang",   "age""29",   "sex""femal"  }  [root@test-dhcp ~]# cat test.json  {   "name""liuxin",   "age""30",   "sex""male"  }  {   "name""jiaweiqiang",   "age""29",   "sex""femal"  }  [root@test-dhcp ~]# cat test.json |jq . -c  {"name":"liuxin","age":"30","sex":"male"}  {"name":"jiaweiqiang","age":"29","sex":"femal"}  

本文来源:www.lxlinux.net/6806.html,若引用不当,请联系修改。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: