jq命令 - json文本處理

jq可以對json數據進行分片、過濾、映射和轉換

安裝

#CentOS
yum install jq

#MacOS
brew install jq

提取信息

cat json.txt
[{"genre":"deep house"}, {"genre": "progressive house"}, {"genre": "dubstep"}]
  • 格式化展示原文
cat json.txt | jq '.' 
[
  {
    "genre": "deep house"
  },
  {
    "genre": "progressive house"
  },
  {
    "genre": "dubstep"
  }
]
  • 輸出數組中的元素,可以使用[index]
cat json.txt | jq '.[0]'
{
  "genre": "deep house"
}
  • 輸出對象的一個字段
jq '.[0].genre' json.txt
"deep house"

數據轉換

  • 過濾字段
cat json.txt| jq -c '[.[] | {"name", "age"}]'
[{"name":"tenmao","age":100},{"name":"tencent","age":null}]
  • 根據KV的值過濾值
cat json.txt| jq -c 'map(select(.name == "tenmao"))'
[{"genre":"deep house","name":"tenmao","age":100}]
  • 增加字段
# 使用map: 映射, 其中.號表示原文, + 表示merge信息
# if then else end是邏輯語句
cat json.txt| jq -c 'map(if .name == "tenmao" then . + {hobby: "baskball"} else . end)'
[{"genre":"deep house","name":"tenmao","age":100,"hobby":"baskball"},{"genre":"progressive house","name":"tencent"}]

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章