溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux jq命令怎么用

發(fā)布時間:2022-02-07 13:57:06 來源:億速云 閱讀:217 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Linux jq命令怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Linux jq命令怎么用”吧!

Linux常用命令jq命令一個靈活的輕量級命令行JSON處理器。

Linux jq命令怎么用

jq

一個靈活的輕量級命令行JSON處理器

補(bǔ)充說明

jq 是 stedolan 開發(fā)的一個輕量級的和靈活的命令行JSON處理器,源碼請參考 jq 項(xiàng)目主頁

jq 用于處理JSON輸入,將給定過濾器應(yīng)用于其JSON文本輸入并在標(biāo)準(zhǔn)輸出上將過濾器的結(jié)果生成為JSON。

最簡單的過濾器是.,它將jq的輸入未經(jīng)修改地復(fù)制到其輸出中(格式設(shè)置除外)。

請注意,jq 當(dāng)前僅支持64位雙精度浮點(diǎn)數(shù)(IEEE754)。

安裝

 # Debian系,如 Ubuntu sudo apt-get install jq 
 # RedHat系, 如 CentOS yum install jq

語法

 jq [options][file...] jq [options] --args [strings...] jq [options] --jsonargs [JSON_TEXTS...]

選項(xiàng)

 -c               緊湊而不是漂亮的輸出; -n               使用`null`作為單個輸入值; -e               根據(jù)輸出設(shè)置退出狀態(tài)代碼; -s               將所有輸入讀取(吸?。┑綌?shù)組中;應(yīng)用過濾器; -r               輸出原始字符串,而不是JSON文本; -R               讀取原始字符串,而不是JSON文本; -C               為JSON著色; -M               單色(不要為JSON著色); -S               在輸出上排序?qū)ο蟮逆I; --tab            使用制表符進(jìn)行縮進(jìn); --arg a v        將變量$a設(shè)置為value; --argjson a v    將變量$a設(shè)置為JSON value; --slurpfile a f  將變量$a設(shè)置為從讀取的JSON文本數(shù)組; --rawfile a f    將變量$a設(shè)置為包含內(nèi)容的字符串; --args           其余參數(shù)是字符串參數(shù),而不是文件; --jsonargs       其余的參數(shù)是JSON參數(shù),而不是文件; --               終止參數(shù)處理;

例子

.: 以漂亮的方式輸出

 $ echo '{ "foo": { "bar": { "baz": 123 } } }' | jq '.' {   "foo": {     "bar": {       "baz": 123     }   } }

.foo, .foo.bar, .foo?: 獲取一個鍵的值

 $ echo '{"foo": 42, "bar": "less interesting data"}' | jq '.foo' 42

.[], .[]?, .[2], .[10:15]: 數(shù)組運(yùn)算

 $ echo '[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]' | jq '.[1]' {   "name": "XML",   "good": false }

[], {}: 構(gòu)造一個數(shù)組/對象

 $ echo '{"user":"stedolan","titles":["JQ Primer", "More JQ"]}' | jq '{user, title: .titles[]}' 
 {   "user": "stedolan",   "title": "JQ Primer" } {   "user": "stedolan",   "title": "More JQ" }

length: 計(jì)算一個值的長度

 $ echo '[[1,2], "string", {"a":2}, null]' | jq '.[] | length'                                   2 6 1 0

keys: 取出數(shù)組中的鍵

$ echo '{"abc": 1, "abcd": 2, "Foo": 3}' | jq 'keys'                                        
[
  "Foo",
  "abc",
  "abcd"
]

,: 使用多個過濾器

$ echo '{ "foo": 42, "bar": "something else", "baz": true}' | jq '.foo, .bar' 
42
"something else"

|: 通過管道將一個過濾器的輸出當(dāng)做下一個過濾器的輸入

$ echo '[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]' | jq '.[] | .name'                                                 
"JSON"
"XML"

select(foo): 如果foo返回true,則輸入保持不變

$ echo '[1,5,3,0,7]' | jq 'map(select(. >= 2))'                                                    
[
  5,
  3,
  7
]

map(foo): 每個輸入調(diào)用過濾器

$ echo '[1,2,3]' | jq 'map(.+1)'
[
  2,
  3,
  4
]

if-then-else-end: 條件判斷

 $ echo '2' | jq 'if . == 0 then "zero" elif . == 1 then "one" else "many" end'

"many"

\(foo): 在字符串中插入值并進(jìn)行運(yùn)算

$ echo '42' | jq '"The input was \(.), which is one less than \(.+1)"'          

"The input was 42, which is one less than 43"

到此,相信大家對“Linux jq命令怎么用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI