日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux杂谈之jq命令

發布時間:2024/3/12 linux 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux杂谈之jq命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一? ?JSON

(1)什么是json

1) JSON 是最常用的'配置'和'數據交換'格式之一,一種與'開發語言無關-->獨立于語言的文本格式'的、'輕量級'的數據存儲格式,全稱JavaScript Object Notation場景: 大量的系統'API接口'現在基本上都是以'JSON格式'顯示結果2) 一種數據格式的'標準規范-->事實標準',起初'來源'于JavaScript這門語言,后來隨著使用的廣泛,幾乎每門開發語言都有處理JSON的API3) 優點:易于人的'閱讀'和'編寫',易于機器'解析'與'生成'

(2)數據類型

數據結構:Object-->'{}'、Array-->'[]'基本類型:string、number、true、false、null -->'6種'后續: null和'空串'的區別1) 一個'花括號'{},整個代表一個對象-->'object'-->里面的元素必須是'key:value'2) 一個'方括號'[],整個代表一個數組-->'array' -->數組元素可以是'上面的六種'、或者'[]'、'{}'-->'廣義上的單個元素'特點: 里面是一種'key:value'的存儲形式,它還有不同的'數據類型'來區分備注: 復雜的數據結構是'通過'{}、'[]'嵌套來'實現'的

(3)基礎

key: 一般是'string'類型,用"雙引號"value:'任何'基本類型或數據結構細節: 最后一個'不要加逗號',加了會'出錯'

(4)高級

核心:數據結構之間的'嵌套'很多時候,服務器返回的JSON都"不是一個扁平"的結構,而是'包含了各種嵌套'強調:一般'json結構'保持一樣理解: 類似于C的'struct'結構體,自己'自由'組合

①? ??對象封裝數組

②? ??數組作為JSON根對象

③? ? 純數組中的對象帶有唯一key

④? ? 更一般形式

處理 JSON null 和空數組及對象

json從入門到精通

二? ?jq

在自動化部署中涉及到shell腳本需要'動態讀取'很多'配置文件',最好是'json格式'

(1)各種語言處理json

Jackjson與FastJson區別

fastjson漏洞

(2)jq簡介

1) jq是一個'出色'的命令行'針對-->JSON處理器',提供了用于查詢、操作和使用JSON文件的大量功能,而且作為一個'命令行工具',可'配合UNIX管道'使用,'單行腳本'處理JSON2) jq可以對json數據進行'分片'、'過濾'、'映射'、'轉換';和sed、awk、grep等命令一樣,可以讓你'輕松'地把玩文本3) 它能'輕松地'把你擁有的數據'轉換成'你期望的格式,而且需要寫的程序通常也'比你期望'的更加簡短4) jq是用'C編寫','沒有'運行時依賴,所以幾乎可以運行在'任何系統'上5) 預編譯的二進制文件可以'直接在'Linux、OS X和windows系統上運行注意:jq'不是'曾經流行的'JS庫'Jquery的'縮寫'

(3)jq安裝

jq官網

1) Debian、'Ubuntu'系:sudo apt-get install jq2) Redhat、'Centos'系:sudo yum install jq -->'7' 或 sudo dnf install jq -->'8'備注:當前'采用'-->'Centos7.7'3) openSUSE:sudo zypper install jq4) Arch:sudo pacman -Sy jq5) Mac OS:使用'Homebrew安裝'-->brew install jq5) Windows:使用Chocolatey NuGet或者直接下載'官方二進制包'chocolatey install jq

源碼安裝

(4)jq實踐

①? json數據格式化

最'簡單'的jq程序是表達式".",它'不改'變輸入,但可以將其'優美地輸出',便于'閱讀'和理解

直接'格式化'打印+++++++++'所作的事情'+++++++++1)'首先'檢查json'語法格式' -->'不符合'則'報錯'2)'然后'格式'正確',會進行'format格式化'

github api調用

curl -s -o example.json https://api.github.com/users/jianzhiwang/repos

②? ? ?jq命令詳解

jq [options] filter [files]1) **options:** --version: 輸出'jq的版本信息'并退出 --slurp/-s: 讀入'整個輸入'流到一個'數組' --raw-input/-R: '不作為JSON解析',將每一行的文本作為字符串'輸出到屏幕' --null-input/ -n: 不讀取任何輸入,過濾器運行使用null作為輸入;一般用作'從頭構建JSON'數據 --compact-output /-c:使輸出緊湊,而'不是'把每一個JSON對象'輸出在一行' --colour-output / -C:打開'顏色'顯示 --monochrome-output / -M:關閉顏色顯示--ascii-output /-a: 指定'輸出格式'為ASCII-raw-output /-r : 如果過濾的結果是一個字符串,那么直接寫到標準輸出(去掉字符串的引號)2) **filter:** . : 默認'輸出' .foo: 輸出指定'屬性',foo代表屬性。 .[foo] : 輸出指定'數組元素',foo代表'數組下標' .[]: 輸出指定數組中'全部元素' , : 指定'多個屬性'作為過濾條件時,用'逗號分隔' | : 將指定的數組元素中的'某個屬性'作為'過濾條件'3) **files:**JOSN格式文件

③? ? 直接取map的某個key對應的value

備注: 'map'可以理解為'object'-->元素是"key":"value"的形式

④? ? 獲取第一個數組的元素

jq 的鍵查詢也支持'鏈式調用'

⑤? ??獲取所有的數組元素

jq '.list[].meta' ceshi7.json[]中如果'為空'表示獲取所有的'數組元素' -->'有層級'過濾'多個值'-->'以逗號隔開'echo '[{"a":1,"b":2},{"c":3,"d":4}]' | jq .[0,1]備注: 多個鍵搜索,中間用'逗號'分開

⑥? ? jq相關參數

uesr_name代表鍵,$name代表name這個變量即前面的okok,這個變量可以是'交互型'的

'-c'選項:該選項控制 jq 是輸出 'raw 格式'內容或 json 格式化'pretty'內容'-r'選項:去掉字符串的引號'"'

⑦? ??重組

1) 數據重'組成數組'-->"[]" echo '{"a":1,"b":2,"c":3,"d":4}' | jq '[.a,.b]'2) 數據重'組成對象'-->"{}" echo '{"a":1,"b":2,"c":3,"d":4}' | jq '{"tmp":.b}'

⑧? ? 管道線|

jq'支持'管道線 |,它'如同'linux命令中的管道線,把'前面命令的輸出'當作是'后面命令的輸入'eg:如下命令把'.[0]作為{…}的輸入',進而'訪問嵌套'的屬性備注:這里我們使用管道'過濾'并'構造'出meta對象補充: 也是'重組'細節: { key} -->'將key和key對應的value組成map'

jq '.[0] | {name:.arrayBrowser[1].name,city:.address.city}'注意: '|'里面的'.'是相對于第一個[0]的

?⑨? ??jq的內建函數

1)判斷

1、'has'是用來是判斷'是否存在'某個key-->'true'、'false'jq 'has("sign")'

2)篩選?

jq 'select(.age > 24) | {name}' wzj.json{"name": "shuifeng" }

3)計算 1

echo '{"a": 1 , "b": 2}'|jq '.a+100'101

4)刪除json鍵

jq也支持從JSON對象中刪除鍵,'刪除后輸出'就'不包含'刪除key的JSON對象。刪除鍵使用del()函數,還是以wzj.json為例:jq 'del(.owner)' wzj.json結果中就不包括owner鍵了

5)計算2?

jq可以映射值并在'每個值上'執行操作備注: 數組中的'每個鍵'進行映射并做數值計算'加2'echo '[1,2,3,4,5,6]' |jq 'map(.+2)'[3,4,5,6,7,8]

⑩? ? 小結

1) 必須要在'命令行'下處理 JSON,強烈'推薦 jq'2) jq '不僅'可以滿足一般性的常見需求,更包括運算、內置函數、條件比較、 變量聲明、自定函數等'強大'功能

總結

以上是生活随笔為你收集整理的Linux杂谈之jq命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。