Linux 中的 JQ 命令使用例項
JSON 是一種資料表示格式,用於在應用程式的不同層之間儲存和傳輸資料;它將資料儲存在鍵:值對中。在文章中,我們將學習使用 JQ 命令 在 shell 中操作和處理 JSON 資料。
如何安裝JQ 命令
在 Centos 8中使用下面命令安裝 jq
:
[root@localhost ~]# dnf -y install jq
語法
現在我們可以開始使用 JQ 命令,因為它已經成功安裝在我們的系統上,但首先,讓我們看一下 JQ 命令的語法:
jq [options] [file...] jq [options] --args [strings...] jq [options] --jsonargs [JSON_TEXTS...]
JQ 命令可以用多種不同的方式使用;它可以直接用於 JSON 檔案,也可以結合其他幾個命令來解釋 JSON 資料。JQ 命令可以與不同的過濾器一起使用,例如“.”、“|”、“,”或“.[]”過濾器來組織 JSON 資料。
JQ 命令還採用不同的選項作為引數,例如 --tab、--stream、--indent n、--unbuffered 和 -L 目錄選項。JQ 命令的語法乍一看可能很複雜,但閱讀整篇文章後您就會熟悉它。
如何使用 JQ 命令組織 JSON 資料
JQ 命令過濾器最簡單和常用的特性。它們用於在將 JSON 資料列印到標準輸出時對其進行組織和美化。
在這個例子中,我們有一個名為 employee.json 的 JSON 檔案,我們需要將資料輸出到標準輸出:
{"workers":{"name": "John Brooks","id": "003"}}
我們可以使用 cat 命令來顯示資料:
[root@localhost ~]# cat employee.json {"workers":{"name": "John Brooks","id": "003"}}
使用 cat 命令列印到標準輸出的資料是無組織和混亂的。我們可以使用 JQ 命令和“.”來組織這些資料,使用 .
來篩選:
www.ccidnet.com/2016/0822/10173006.shtml
www.donews.com/news/detail/4/2970162.html
www.51cto.com/it/news/2020/0113/18299.html
www.donews.com/news/detail/4/2971720.html
[root@localhost ~]# jq '.' employee.json { "workers": { "name": "John Brooks", "id": "003" } }
現在,資料變得更有條理、色彩豐富且更易於理解。從 API 訪問資料時尤其需要此過濾器;API 中儲存的資料可能非常無組織且令人困惑。
如何使用 JQ 命令訪問屬性
.欄位
過濾器和 JQ 命令可用於訪問 shell 中的物件屬性。
如果我們只想訪問單個屬性並將其列印到標準輸出,那麼我們可以使用 .欄位
運算子。例如,要訪問工人的屬性,我們可以使用以下命令:
[root@localhost ~]# jq '.workers' employee.json { "name": "John Brooks", "id": "003" }
我們還可以使用 .欄位
運算子訪問屬性中存在的專案。要訪問工人屬性中的名稱項,我們將使用:
[root@localhost ~]# jq '.workers.name' employee.json "John Brooks"
如何使用 JQ 命令訪問陣列項
我們還可以使用 .[]
運算子訪問和輸出 JSON 檔案中陣列中存在的元素。對於這個例子,我們將修改我們的 JSON 檔案,新增下面內容:
[{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"},{"name": "Todd Gray","id": "009"}]
檢視一下employee.json檔案:
[root@localhost ~]# cat employee.json [{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"},{"name": "Todd Gray","id": "009"}]
要輸出 JSON 檔案中存在的所有陣列,我們將執行以下命令:
[root@localhost ~]# jq '.[]' employee.json { "name": "John Brooks", "id": "003" } { "name": "Randy Park", "id": "053" } { "name": "Todd Gray", "id": "009" }
要僅輸出第二個陣列,我們可以通過以下方式修改上述命令:
[root@localhost ~]# jq '.[1]' employee.json { "name": "Randy Park", "id": "053" }
請記住,陣列從索引 0 開始的。
我們還可以使用 .欄位
運算子訪問陣列中存在的屬性。例如,如果我們想訪問第三個陣列中的 name 屬性,那麼我們將執行以下命令:
[root@localhost ~]# jq '.[2].name' employee.json "Todd Gray"
類似地,要訪問陣列中的所有名稱屬性,我們可以執行以下命令:
[root@localhost ~]# jq '.[].name' employee.json "John Brooks" "Randy Park" "Todd Gray"
總結
JQ 命令用於將 JSON 資料轉換為更易讀的格式並將其列印到 Linux 上的標準輸出。JQ 命令是圍繞過濾器構建的,過濾器用於從 JSON 檔案中僅查詢和列印所需的資料。
- 設計模式之狀態模式
- 如何實現資料庫讀一致性
- 我是怎麼入行做風控的
- C 11精要:部分語言特性
- 吳恩達來信:人工智慧領域的求職小 tips
- EasyCV帶你復現更好更快的自監督演算法-FastConvMAE
- 某車聯網App 通訊協議加密分析(四) Trace Code
- 帶你瞭解CANN的目標檢測與識別一站式方案
- EasyNLP玩轉文字摘要(新聞標題)生成
- PostgreSQL邏輯複製解密
- 基於 CoreDNS 和 K8s 構建雲原生場景下的企業級 DNS
- 迴圈神經網路(RNN)可是在語音識別、自然語言處理等其他領域中引起了變革!
- 技術分享| 分散式系統中服務註冊發現元件的原理及比較
- 利用谷歌地圖採集外貿客戶的電話和手機號碼
- 跟我學Python影象處理丨關於影象金字塔的影象向下取樣和向上取樣
- 帶你掌握如何使用CANN 運算元ST測試工具msopst
- 一招教你如何高效批量匯入與更新資料
- 一步步搞懂MySQL元資料鎖(MDL)
- 你知道如何用 PHP 實現多程序嗎?
- KubeSphere 閘道器的設計與實現(解讀)