自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux jq 命令講解與實(shí)戰(zhàn)操作

系統(tǒng) Linux
jq 是一個(gè)強(qiáng)大的命令行工具,用于處理 JSON 格式的數(shù)據(jù)。它可以幫助你查詢、過濾、修改和處理 JSON 數(shù)據(jù),使得在命令行環(huán)境下處理 JSON 變得非常方便。

一、概述

jq 是一個(gè)強(qiáng)大的命令行工具,用于處理 JSON 格式的數(shù)據(jù)。它可以幫助你查詢、過濾、修改和處理 JSON 數(shù)據(jù),使得在命令行環(huán)境下處理 JSON 變得非常方便。

圖片圖片

GitHub 地址:https://github.com/stedolan/jqjq 官方網(wǎng)站: https://stedolan.github.io/jq/

二、jq 命令安裝

yum install epel-release
yum install -y jq

三、jq 命令語(yǔ)法與示例詳解

jq 命令有很多參數(shù)和選項(xiàng),可以幫助你處理和轉(zhuǎn)換 JSON 數(shù)據(jù)。以下是一些常用的 jq 命令參數(shù)和選項(xiàng):

1)基本用法

jq [options] [filter] [file]
  • options: 可選參數(shù),用于指定 jq 的選項(xiàng)。
  • filter: 必需參數(shù),用于指定 JSON 數(shù)據(jù)的查詢和轉(zhuǎn)換操作。
  • file: 可選參數(shù),要處理的 JSON 數(shù)據(jù)文件。

2)常用選項(xiàng)

  • -r: 輸出原始格式,而不是 JSON 編碼。
  • -c: 輸出時(shí)將結(jié)果按行分隔。
  • -s: 將輸入視為多個(gè) JSON 對(duì)象,用于處理多個(gè) JSON 對(duì)象的數(shù)組。

3)查詢和過濾

  • .: 表示當(dāng)前對(duì)象,用于訪問字段或?qū)傩浴?/li>
  • .fieldName: 選擇指定字段的值。
  • []: 用于遍歷數(shù)組元素。
  • select(condition): 根據(jù)條件選擇元素。
  • map(transform): 對(duì)數(shù)組中的每個(gè)元素應(yīng)用轉(zhuǎn)換操作。

當(dāng)使用 jq 進(jìn)行查詢和過濾 JSON 數(shù)據(jù)時(shí),你可以根據(jù)需要執(zhí)行各種操作。以下是一些常見的查詢和過濾示例,假設(shè)我們有以下 JSON 數(shù)據(jù):

[
  {
    "name": "Alice",
    "age": 25,
    "city": "New York"
  },
  {
    "name": "Bob",
    "age": 30,
    "city": "Los Angeles"
  },
  {
    "name": "Charlie",
    "age": 22,
    "city": "Chicago"
  }
]

1、選擇字段

查詢并選擇所有人的姓名:

cat data.json | jq '.[].name'

輸出:

"Alice"
"Bob"
"Charlie"

2、過濾

選擇年齡大于 25 歲的人的姓名和城市:

cat data.json | jq '.[] | select(.age > 25) | .name, .city'

輸出:

"Bob"
"Los Angeles"

3、遍歷數(shù)組

遍歷并輸出所有人的年齡:

cat data.json | jq '.[] | .age'

輸出:

25
30
22

4、組合操作

選擇年齡在 25 到 30 歲之間的人的姓名和城市,并按照姓名排序:

cat data.json | jq '.[] | select(.age >= 25 and .age <= 30) | .name, .city' | sort
"Alice"
"New York"
"Bob"
"Los Angeles"

這些只是一些基本的查詢和過濾示例。jq 支持更多的操作和功能,你可以根據(jù)需要進(jìn)行組合和定制。請(qǐng)根據(jù)你的數(shù)據(jù)和需求來(lái)調(diào)整和擴(kuò)展這些示例。

4)修改和創(chuàng)建

  • .fieldName = value: 修改字段的值。
  • del(.fieldName): 刪除指定字段。
  • .newField = value: 創(chuàng)建新的字段。

使用 jq 進(jìn)行 JSON 數(shù)據(jù)的修改和創(chuàng)建可以幫助你更新數(shù)據(jù)或添加新的字段。以下是一些示例,假設(shè)我們有以下 JSON 數(shù)據(jù):

{
  "name": "Alice",
  "age": 25,
  "city": "New York"
}

1、修改字段值:

修改年齡字段的值為 26:

cat data.json | jq '.age = 26'

輸出:

{
  "name": "Alice",
  "age": 26,
  "city": "New York"
}

2、創(chuàng)建新字段:

添加一個(gè)新的字段 country 并設(shè)置其值為 "USA":

cat data.json | jq '.country = "USA"'

輸出:

{
  "name": "Alice",
  "age": 25,
  "city": "New York",
  "country": "USA"
}

3、組合操作:

修改年齡字段的值為 26,并添加一個(gè)新的字段 country:

cat data.json | jq '.age = 26 | .country = "USA"'

輸出:

{
  "name": "Alice",
  "age": 26,
  "city": "New York",
  "country": "USA"
}

4、條件修改

如果年齡小于 30,則將城市修改為 "Chicago":

cat data.json | jq 'if .age < 30 then .city = "Chicago" else . end'

輸出(由于年齡小于 30,城市被修改):

{
  "name": "Alice",
  "age": 25,
  "city": "Chicago"
}

這些示例演示了如何使用 jq 修改和創(chuàng)建 JSON 數(shù)據(jù)。你可以根據(jù)需要進(jìn)行組合和調(diào)整,以實(shí)現(xiàn)你的需求。記住,jq 提供了強(qiáng)大的功能,可以進(jìn)行更復(fù)雜的操作,可以根據(jù)文檔和教程進(jìn)一步學(xué)習(xí)。

5)運(yùn)算符

  • +, -, *, /: 數(shù)值運(yùn)算。
  • ==, !=, <, >, <=, >=: 比較運(yùn)算。
  • and, or, not: 邏輯運(yùn)算。

jq 支持多種運(yùn)算符,用于在 JSON 數(shù)據(jù)中執(zhí)行數(shù)值運(yùn)算、比較和邏輯操作。以下是一些常見的 jq 運(yùn)算符示例,假設(shè)我們有以下 JSON 數(shù)據(jù):

{
  "a": 10,
  "b": 5,
  "c": 15
}

1、數(shù)值運(yùn)算

進(jìn)行加法、減法、乘法和除法運(yùn)算:

cat data.json | jq '.a + .b'
cat data.json | jq '.a - .b'
cat data.json | jq '.a * .b'
cat data.json | jq '.a / .b'

輸出:

15
5
50
2

2、比較運(yùn)算:

比較字段值,返回布爾結(jié)果:

cat data.json | jq '.a > .b'
cat data.json | jq '.a >= .c'
cat data.json | jq '.b < .c'

輸出:

true
false
true

3、邏輯運(yùn)算:

執(zhí)行邏輯 AND、OR 和 NOT 操作:

cat data.json | jq '.a > 5 and .b < 10'
cat data.json | jq '.a > 15 or .b > 10'
cat data.json | jq 'not (.c > 20)'

輸出:

true
true
false

4、條件運(yùn)算:

使用 if 和 then 進(jìn)行條件運(yùn)算:

cat data.json | jq 'if .a > 10 then "Greater" else "Less or equal" end'

輸出:

"Less or equal"

這些示例展示了 jq 中的一些常見運(yùn)算符的用法。你可以根據(jù)需要進(jìn)行更復(fù)雜的運(yùn)算和組合操作,以實(shí)現(xiàn)你的需求。在處理 JSON 數(shù)據(jù)時(shí),jq 提供了廣泛的功能來(lái)執(zhí)行各種操作。

6)變量和條件

  • as $variable: 將結(jié)果保存到變量中。
  • if condition then ... else ... end: 條件語(yǔ)句。

在 jq 中,你可以使用變量和條件語(yǔ)句來(lái)處理和轉(zhuǎn)換 JSON 數(shù)據(jù)。以下是一些示例,說明如何在 jq 中使用變量和條件語(yǔ)句,假設(shè)我們有以下 JSON 數(shù)據(jù):

{
  "name": "Alice",
  "age": 25,
  "city": "New York"
}

1、使用變量:

將字段值存儲(chǔ)到變量中,并在輸出中使用變量:

cat data.json | jq '.age as $age | "Name: \(.name), Age: \($age)"'

輸出:

"Name: Alice, Age: 25"

2、條件語(yǔ)句:

使用 if 和 then 進(jìn)行條件判斷:

cat data.json | jq 'if .age > 18 then "Adult" else "Minor" end'

輸出:

"Adult"

3、條件判斷和變量組合:

結(jié)合條件語(yǔ)句和變量,根據(jù)年齡輸出不同的消息:

cat data.json | jq 'if .age > 18 then "Name: \(.name), Status: Adult" else "Name: \(.name), Status: Minor" end'

輸出:

"Name: Alice, Status: Adult"

4、使用條件操作修改數(shù)據(jù):

根據(jù)年齡字段的值,如果大于 30 則修改城市字段:

cat data.json | jq 'if .age > 30 then .city = "Chicago" else . end'

輸出(由于年齡不大于 30,所以城市字段不變):

{
  "name": "Alice",
  "age": 25,
  "city": "New York"
}

這些示例演示了如何在 jq 中使用變量和條件語(yǔ)句來(lái)處理 JSON 數(shù)據(jù)。你可以根據(jù)需要進(jìn)行組合和定制,以滿足你的需求。jq 提供了強(qiáng)大的功能來(lái)處理和轉(zhuǎn)換 JSON 數(shù)據(jù),可以根據(jù)文檔和教程進(jìn)一步學(xué)習(xí)。

7)函數(shù)

jq 支持一些內(nèi)置函數(shù),如 length, keys, values, tostring 等,用于操作和處理 JSON 數(shù)據(jù)。

在 jq 中,你可以使用內(nèi)置的函數(shù)來(lái)處理和轉(zhuǎn)換 JSON 數(shù)據(jù)。以下是一些常見的 jq 函數(shù)示例,假設(shè)我們有以下 JSON 數(shù)據(jù):

{
  "name": "Alice",
  "age": 25,
  "city": "New York",
  "scores": [85, 90, 78, 95]
}

1、length 函數(shù):

獲取數(shù)組的長(zhǎng)度:

cat data.json | jq '.scores | length'

輸出:

4

2、map 函數(shù):

對(duì)數(shù)組中的每個(gè)元素應(yīng)用轉(zhuǎn)換操作:

cat data.json | jq '.scores | map(. * 2)'

輸出:

[170,180,156,190]

3、keys 和 values 函數(shù):

獲取對(duì)象的鍵和值:

cat data.json | jq '. | keys'
cat data.json | jq '. | values'

輸出:

["name","age","city","scores"]
["Alice",25,"New York",[85,90,78,95]]

4、to_entries 函數(shù):

將對(duì)象轉(zhuǎn)換為鍵值對(duì)數(shù)組:

cat data.json | jq '. | to_entries'

輸出:

[
  {"key":"name","value":"Alice"},
  {"key":"age","value":25},
  {"key":"city","value":"New York"},
  {"key":"scores","value":[85,90,78,95]}
]

5、自定義函數(shù):

使用自定義函數(shù)進(jìn)行操作:

cat data.json | jq 'def average: reduce .[] as $item (0; . + $item) / length; .scores | average'

輸出:

87

這些是一些常見的 jq 命令參數(shù)和選項(xiàng),可以幫助你進(jìn)行 JSON 數(shù)據(jù)的查詢、過濾、修改和轉(zhuǎn)換。你可以通過查閱 jq 的官方文檔和教程,深入學(xué)習(xí)和掌握更多功能和用法。

責(zé)任編輯:武曉燕 來(lái)源: 大數(shù)據(jù)與云原生技術(shù)分享
相關(guān)推薦

2023-01-26 23:59:24

Ansibleplaybook列表

2009-12-21 11:22:37

Linux網(wǎng)絡(luò)操作命令

2010-07-01 14:52:42

Linux grep命

2022-12-13 09:01:50

云原生組件數(shù)據(jù)

2009-12-16 11:28:09

Linux Ubunt

2022-10-10 12:54:00

Flink運(yùn)維

2022-02-08 12:19:36

LinuxJQ命令

2023-03-06 07:19:50

2023-09-27 00:12:23

2023-03-03 07:54:21

2010-01-06 17:45:47

Linux操作系統(tǒng)

2009-10-19 17:10:37

Linux文件命令

2009-12-14 11:29:19

Linux查看命令

2010-01-15 19:37:36

Linux命令

2022-11-08 08:55:31

2023-03-07 07:56:37

Sqoopk8s底層

2022-10-14 07:42:50

LuceneHTTPWeb

2009-10-22 10:50:47

linux磁盤管理命令

2022-11-06 21:31:11

云原生Sentinel集群模式

2009-10-27 09:26:26

linux系統(tǒng)監(jiān)控命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)