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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

shell学习(12)- jq

發(fā)布時間:2023/12/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell学习(12)- jq 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

jq命令允許直接在命令行下對JSON進行操作,包括分片、過濾、轉(zhuǎn)換等 ,jq是用C編寫,沒有運行時依賴,所以幾乎可以運行在任何系統(tǒng)上。預編譯的二進制文件可以直接在Linux、OS X和windows系統(tǒng)上運行,當然在linux和OS X系統(tǒng)你需要賦與其可執(zhí)行權(quán)限;在linux系統(tǒng)中也可以直接用yum安裝。

下載地址?https://stedolan.github.io/jq/download/

本文主要介紹其使用,默認是已經(jīng)安裝好的,沒有安裝的,請自行安裝。

現(xiàn)在先準備json串,如下kumufengchun.json:

{"name":"kumufengchun","age":"18","city":"beijing","email":"kumufengchun@gmail.com","date":"Thursday","country":"China","company":["baidu","google","alibaba"]}"

如下test.json:

[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]

?

1.用jq .直接查看

jq . kumufengchun.json

或者

cat kumufengchun.json | jq .

輸出如下:

[root@localhost ~]$ cat kumufengchun.json | jq . {"name": "kumufengchun","age": "18","city": "beijing","email": "kumufengchun@gmail.com","date": "Thursday","country": "China","company": ["baidu","google","alibaba"] }

是已經(jīng)格式化的json數(shù)據(jù)串,在linux系統(tǒng)下還高光顯示,key和value用不同的顏色表示,如下圖:

?

2.輸出某個字段或者某個索引的值

語法:jq? '.<key>'? ,這里key是字段名稱

[root@localhost ~]$ jq .name kumufengchun.json "kumufengchun"[root@localhost ~]$ jq '.name' kumufengchun.json "kumufengchun"[root@localhost ~]$ jq '.company' kumufengchun.json [ "baidu", "google", "alibaba" ]

?

3.輸出數(shù)組的值

語法:jq '.[<value>]' ,這里value是數(shù)組的索引整數(shù)值

[root@localhost ~]$ jq '.company[1]' kumufengchun.json "google"[root@localhost ~]$ jq '.company[2]' kumufengchun.json "alibaba"

?

4.輸出列表、數(shù)組的一部分,對其進行切片

語法:jq '.<list-key>[s:e]',返回的是數(shù)組或者列表的index從s開始(包括s)到e結(jié)束(不包括e)

[root@localhost ~]$ jq '.company[0:2]' kumufengchun.json ["baidu","google" ]

也可以省略開始的index,只有結(jié)束的index,如下,仍然是不包括結(jié)束index的值:

[root@localhost ~]$ jq '.company[:3]' kumufengchun.json ["baidu","google","alibaba" ]

也可以省略結(jié)束的index,只有開始的index,如下,輸出到最后:

[root@localhost ~]$ jq '.company[1:]' kumufengchun.json ["google","alibaba" ]

開始的索引也可以是負數(shù),表示從后邊倒著數(shù),從-1開始數(shù):

[root@localhost ~]$ jq '.company[-2:]' kumufengchun.json ["google","alibaba" ]

?

5.循環(huán)輸出所有的值,如數(shù)組嵌套

語法:jq '.[]'

[root@localhost ~]$ jq '.[]' test.json {"name": "JSON","good": true } {"name": "XML","good": false }[root@localhost ~]$ jq '.[]' kumufengchun.json "kumufengchun" "18" "beijing" "kumufengchun@gmail.com" "Thursday" "China" ["baidu","google","alibaba" ]

?

6.輸出多個索引的值,可以用逗號分割

語法: jq '.key1,.key2'

[root@localhost ~]$ jq '.name,.age' kumufengchun.json "kumufengchun" "18" [root@localhost ~]$ jq '.date,.company[]' kumufengchun.json "Thursday" "baidu" "google" "alibaba"

如果是數(shù)組,用中括號括起來要輸出的鍵值,鍵值先寫誰,先輸出誰

[root@localhost ~]$ jq '.company[2,0]' kumufengchun.json "alibaba" "baidu"

?

7.用管道符號|可以對其進行再次處理

語法:jq .[] | .<key1>

[root@localhost ~]$ jq '.[]|.name' test.json "JSON" "XML"

?

8.括號的作用

[root@localhost ~]$ echo 1 | jq '(.+2)*5' 15 [root@localhost ~]$ echo {1,2,3} | jq '(.+2)*5' 15 20 25

?

9.length求長度,如果是字符串是求的字符串的長度,如果是數(shù)組則求得是數(shù)組的長度

[root@localhost ~]$ cat kumufengchun.json | jq '.[] | length' 12 2 7 22 8 5 3

?

10.輸出所有的keys

語法: jq keys

[root@localhost ~]$ cat kumufengchun.json | jq 'keys' ["age","city","company","country","date","email","name" ]

輸出數(shù)組的keys:

[root@localhost ~]$ cat kumufengchun.json | jq '.company | keys' [0,1,2 ]

?

11.判斷存不存在某個鍵

[root@localhost ~]$ cat kumufengchun.json | jq 'has("email")' true [root@localhost ~]$ cat kumufengchun.json | jq 'has("address")' false

?

更多用法參見文檔?https://stedolan.github.io/jq/manual/#Invokingjq

轉(zhuǎn)載于:https://www.cnblogs.com/kumufengchun/p/10799888.html

總結(jié)

以上是生活随笔為你收集整理的shell学习(12)- jq的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。