黄色片网站免费观看-黄色片网站观看-黄色片网站大全-黄色片视频网-色偷偷网址-色偷偷网站

jq

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

補充說明

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

jq 用于處理JSON輸入,將給定過濾器應用于其JSON文本輸入并在標準輸出上將過濾器的結果生成為JSON。

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

請注意,jq 當前僅支持64位雙精度浮點數(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`作為單個輸入值;
-e               根據輸出設置退出狀態代碼;
-s               將所有輸入讀取(吸取)到數組中;應用過濾器;
-r               輸出原始字符串,而不是JSON文本;
-R               讀取原始字符串,而不是JSON文本;
-C               為JSON著色;
-M               單色(不要為JSON著色);
-S               在輸出上排序對象的鍵;
--tab            使用制表符進行縮進;
--arg a v        將變量$a設置為value<v>;
--argjson a v    將變量$a設置為JSON value<v>;
--slurpfile a f  將變量$a設置為從<f>讀取的JSON文本數組;
--rawfile a f    將變量$a設置為包含<f>內容的字符串;
--args           其余參數是字符串參數,而不是文件;
--jsonargs       其余的參數是JSON參數,而不是文件;
--               終止參數處理;

例子

.: 以漂亮的方式輸出

$ 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]: 數組運算

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

[], {}: 構造一個數組/對象

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

{
  "user": "stedolan",
  "title": "JQ Primer"
}
{
  "user": "stedolan",
  "title": "More JQ"
}

length: 計算一個值的長度

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

keys: 取出數組中的鍵

$ 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"

|: 通過管道將一個過濾器的輸出當做下一個過濾器的輸入

$ 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): 每個輸入調用過濾器

$ 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): 在字符串中插入值并進行運算

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

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