日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jq 命令详解

發布時間:2024/3/12 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jq 命令详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jq 命令詳解


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

它能輕松地把你擁有的數據轉換成你期望的格式,而且需要寫的程序通常也比你期望的更加簡短

=

總結

  • 需要用引號括起所有內容(單雙引號均可)
  • 若無管道操作,可省略引號
  • 若有管道操作,必須使用引號和括號(即使不指定元素也要括號.[])
  • = =

    = =

    安裝

    yum -y install jq

    =

    命令格式

    # 格式 cat json.txt | jq 'cmd'# 不同的 cmd 可對數據進行不同的過濾# 基礎用法:以下三者等效cat json.txt | jq '.[]' # 標準格式。。。cat json.txt | jq '.'cat json.txt | jq .

    演示:

    # 源文件(可讀性差) [root@centos7 ~]#cat json.txt [{"name":"站長工具","url":"http://tool.chinaz.com","address":{"city":"廈門","country":"中國"},"arrayBrowser":[{"name":"Google","url":"http://www.google.com"},{"name":"Baidu","url":"http://www.baidu.com"}]},{"name":"站長之家","url":"http://tool.zzhome.com","address":{"city":"大連","country":"中國"},"arrayBrowser":[{"name":"360","url":"http://www.so.com"},{"name":"bing","url":"http://www.bing.com"}]}]# 命令 jq . 實現優美輸出 [root@centos7 ~]#cat json.txt | jq . [{"name": "站長工具","url": "http://tool.chinaz.com","address": {"city": "廈門","country": "中國"},"arrayBrowser": [{"name": "Google","url": "http://www.google.com"},{"name": "Baidu","url": "http://www.baidu.com"}]},{"name": "站長之家","url": "http://tool.zzhome.com","address": {"city": "大連","country": "中國"},"arrayBrowser": [{"name": "360","url": "http://www.so.com"},{"name": "bing","url": "http://www.bing.com"}]} ]

    =

    =

    指定輸出列表的第幾個元素

    注:.[0]表示第一個。。。(引號可省略)

    [root@centos7 ~]#cat json.txt | jq .[0] {"name": "站長工具","url": "http://tool.chinaz.com","address": {"city": "廈門","country": "中國"},"arrayBrowser": [{"name": "Google","url": "http://www.google.com"},{"name": "Baidu","url": "http://www.baidu.com"}] }# 只輸出第二個 [root@centos7 ~]#cat json.txt | jq .[1] {"name": "站長之家","url": "http://tool.zzhome.com","address": {"city": "大連","country": "中國"},"arrayBrowser": [{"name": "360","url": "http://www.so.com"},{"name": "bing","url": "http://www.bing.com"}] }# 不存在則輸出 null [root@centos7 ~]#cat json.txt | jq .[2] null

    =

    過濾指定的字段

    • 有管道操作時,必須使用引號、必須使用元素括號
    • 引號用來將jq之后的所有內容括起來

    標準格式:

    # 不限定元素 cat json.txt | jq '.[] | {name-1:.aabb,name-2:.xx.yy}'# 解釋。。。。。。。。。。。。 name-1 、 name-2 為'自定義key' .aabb 、 .xx.yy 為源文本中存在的字段的值 #------------------------------------------------------## 指定第幾個元素再過濾 cat json.txt | jq '.[0] | {name:.name,city:.address.city}' cat json.txt | jq '.[1] | {name:.arrayBrowser[1].name,city:.address.city}'

    效果:

    # 全文操作 [root@centos7 ~]#cat json.txt | jq '.[] | {n1:.name,n2:.address.city,n3:.address.country}' {"n1": "站長工具","n2": "廈門","n3": "中國" } {"n1": "站長之家","n2": "大連","n3": "中國" }# 指定元素過濾 [root@centos7 ~]#cat json.txt | jq '.[0] | {n1:.name,n2:.address.city,n3:.address.country}' {"n1": "站長工具","n2": "廈門","n3": "中國" }[root@centos7 ~]#cat json.txt | jq '.[1] | {n1:.name,n2:.address.city,n3:.address.country}' {"n1": "站長之家","n2": "大連","n3": "中國" }

    =

    輸出數組

    操作:在引號內部使用[]將所有內容括起來

    # 格式 cat json.txt | jq "[ cmd ]"# 范例 cat json.txt | jq "[.[] | {name:.arrayBrowser[1].name,city:.address.city}]"

    數組輸出對比效果:

    # 不用數組: [root@centos7 ~]#cat json.txt | jq ".[] | {name:.arrayBrowser[1].name,city:.address.city}" {"name": "Baidu","city": "廈門" } {"name": "bing","city": "大連" }# 使用數組: [root@centos7 ~]#cat json.txt | jq "[.[] | {name:.arrayBrowser[1].name,city:.address.city}]" [{"name": "Baidu","city": "廈門"},{"name": "bing","city": "大連"} ]

    =

    自定義 key

    在{}中,冒號前面的名字是映射的名稱,可以任意修改

    cat json.txt | jq "[.[] | {name_001:.arrayBrowser[1].name,city_002:.address.city}]" cat json.txt | jq ".[] | {CAOKUNZI_001:.arrayBrowser[1].name,ZHUBAZI_002:.address.city}"

    演示:

    [root@centos7 ~]#cat json.txt | jq "[.[] | {name_001:.arrayBrowser[1].name,city_002:.address.city}]" [{"name_001": "Baidu","city_002": "廈門"},{"name_001": "bing","city_002": "大連"} ][root@centos7 ~]#cat json.txt | jq ".[] | {CAOKUNZI_001:.arrayBrowser[1].name,ZHUBAZI_002:.address.city}" {"CAOKUNZI_001": "Baidu","ZHUBAZI_002": "廈門" } {"CAOKUNZI_001": "bing","ZHUBAZI_002": "大連" }

    wan

    總結

    以上是生活随笔為你收集整理的jq 命令详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。