W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
一個(gè)靈活的輕量級(jí)命令行JSON處理器
jq 是 stedolan 開發(fā)的一個(gè)輕量級(jí)的和靈活的命令行JSON處理器,源碼請(qǐng)參考 jq 項(xiàng)目主頁(yè)。
jq 用于處理JSON輸入,將給定過濾器應(yīng)用于其JSON文本輸入并在標(biāo)準(zhǔn)輸出上將過濾器的結(jié)果生成為JSON。
最簡(jiǎn)單的過濾器是.,它將jq的輸入未經(jīng)修改地復(fù)制到其輸出中(格式設(shè)置除外)。
請(qǐng)注意,jq 當(dāng)前僅支持64位雙精度浮點(diǎn)數(shù)(IEEE754)。
# Debian系,如 Ubuntu
sudo apt-get install jq
# RedHat系, 如 CentOS
yum install jq
jq [options] <jq filter> [file...]
jq [options] --args <jq filter> [strings...]
jq [options] --jsonargs <jq filter> [JSON_TEXTS...]
-c 緊湊而不是漂亮的輸出;
-n 使用`null`作為單個(gè)輸入值;
-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<v>;
--argjson a v 將變量$a設(shè)置為JSON value<v>;
--slurpfile a f 將變量$a設(shè)置為從<f>讀取的JSON文本數(shù)組;
--rawfile a f 將變量$a設(shè)置為包含<f>內(nèi)容的字符串;
--args 其余參數(shù)是字符串參數(shù),而不是文件;
--jsonargs 其余的參數(shù)是JSON參數(shù),而不是文件;
-- 終止參數(shù)處理;
.: 以漂亮的方式輸出
$ echo '{ "foo": { "bar": { "baz": 123 } } }' | jq '.'
{
"foo": {
"bar": {
"baz": 123
}
}
}
.foo, .foo.bar, .foo?: 獲取一個(gè)鍵的值
$ 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)造一個(gè)數(shù)組/對(duì)象
$ echo '{"user":"stedolan","titles":["JQ Primer", "More JQ"]}' | jq '{user, title: .titles[]}'
{
"user": "stedolan",
"title": "JQ Primer"
}
{
"user": "stedolan",
"title": "More JQ"
}
length: 計(jì)算一個(gè)值的長(zhǎng)度
$ 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"
]
,: 使用多個(gè)過濾器
$ echo '{ "foo": 42, "bar": "something else", "baz": true}' | jq '.foo, .bar'
42
"something else"
|: 通過管道將一個(gè)過濾器的輸出當(dāng)做下一個(gè)過濾器的輸入
$ 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): 每個(gè)輸入調(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"
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: