linux命令下jq的用法簡介
導讀 | jq可以對json資料進行分片、過濾、對映和轉換,和sed、awk、grep等 一樣,都可以讓你輕鬆地把玩文字。它能輕鬆地把你擁有的資料轉換成你期望的格式,而且需要寫的程式通常也比你期望的更加簡短。 |
jq是用C編寫,沒有執行時依賴,所以幾乎可以執行在任何系統上。預編譯的二進位制檔案可以直接在
、OS X和windows系統上執行,當然在linux和OS X系統你需要賦與其可執行許可權;在
中也可以直接用yum安裝。
下載頁面:
在知道jq 之前,我在linux系統中極少直接去命令去處理json資料,除非只是簡單地從中過濾某個字串,那就用grep結合正規表示式來解決。所以,掌握了jq命令,則可以讓linux命令和 在處理json資料時變得得心應手。
jq簡明教程
例子檔案
為了便於演示jq的功能,我們在檔案json.txt中儲存如下內容:
cat json.txt [{"name":"站長工具","url":"{"city":"廈門","country":"中國"},"arrayBrowser":[{"name":"Google","url":"},{"name":"Baidu","url":"}]},{"name":"站長之家","url":"{"city":"大連","country":"中國"},"arrayBrowser":[{"name":"360","url":"},{"name":"bing","url":"}]}]
為了讓你理解檔案中的內容,對比jq的效果,在json解析工具中顯示為:
最簡單的jq程式是表示式".",它不改變輸入,但可以將其優美地輸出,便於閱讀和理解。
cat json.txt | jq '.' [ { "name": "站長工具", "url": " "address": { "city": "廈門", "country": "中國" }, "arrayBrowser": [ { "name": "Google", "url": " }, { "name": "Baidu", "url": " } ] }, { "name": "站長之家", "url": " "address": { "city": "大連", "country": "中國" }, "arrayBrowser": [ { "name": "360", "url": " }, { "name": "bing", "url": " } ] } ]
輸出列表中的第一個元素,可以使用[index]:
cat json.txt | jq '.[0]' { "name": "站長工具", "url": " "address": { "city": "廈門", "country": "中國" }, "arrayBrowser": [ { "name": "Google", "url": " }, { "name": "Baidu", "url": " } ] }
jq支援管道線 |,它如同linux命令中的管道線——把前面命令的輸出當作是後面命令的輸入。如下命令把.[0]作為{…}的輸入,進而訪問巢狀的屬性,如.name和.address.city。
觀察如下幾個命令,通過改變|前後的輸入和輸出來達到不同的效果:
cat json.txt | jq '.[0] | {name:.name,city:.address.city}' { "name": "站長工具", "city": "廈門" } cat json.txt | jq '.[0] | {name:.arrayBrowser[1].name,city:.address.city}' { "name": "Baidu", "city": "廈門" } cat json.txt | jq ".[] | {name:.arrayBrowser[1].name,city:.address.city}" { "name": "Baidu", "city": "廈門" } { "name": "bing", "city": "大連" }
如果希望把jq的輸出當作一個陣列,可以在前後加上[]:
cat json.txt | jq "[.[] | {name:.arrayBrowser[1].name,city:.address.city}]" [ { "name": "Baidu", "city": "廈門" }, { "name": "bing", "city": "大連" } ]
在{}中,冒號前面的名字是對映的名稱,你可以任意修改,如:
cat json.txt | jq "[.[] | {name_001:.arrayBrowser[1].name,city_002:.address.city}]" [ { "name_001": "Baidu", "city_002": "廈門" }, { "name_001": "bing", "city_002": "大連" } ]
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2901401/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Linux】jq 命令介紹和使用Linux
- jq命令用法總結
- Linux——基礎命令用法(下)Linux
- linux下mail的簡單用法LinuxAI
- Linux cgroups 命令簡介Linux
- Linux的命令列介面簡介Linux命令列
- Linux 中的 JQ 命令使用例項Linux
- Linux下more命令高階用法Linux
- Linux下mv命令高階用法Linux
- Linux下crontab命令的用法:sudo crontab -lLinux
- Linux下 ls 命令的高階用法8例Linux
- linux下json解析神器----jqLinuxJSON
- linux 中 date命令的用法Linux
- linux useradd命令的基本用法Linux
- Linux sed命令用法Linux
- Linux 下使用 killall 命令終止程式的 8 大用法Linux
- Linux下history命令簡單原理Linux
- rocky與linux的nmcli命令用法Linux
- Linux命令-Sed用法教程Linux
- linux20個常用命令詳解和用法 linux常用命令大全介紹Linux
- 常用的Linux命令;Linux常用命令用法及實現方式Linux
- Linux——基礎命令用法(上)Linux
- InfluxDB簡介與php用法UXPHP
- jq的簡易模板生成
- lsof命令簡介
- nc命令簡介
- Git命令簡介Git
- chown 命令簡介
- Linux 命令列:find 的 26 個用法示例Linux命令列
- jq 簡單使用
- Linux簡介Linux
- Linux——簡介Linux
- MongoDB三種聚合命令用法介紹MongoDB
- Linux命令列:cURL的十種常見用法Linux命令列
- linux後臺執行命令:&與nohup的用法Linux
- linux中查詢find命令的複雜用法Linux
- crontab命令簡介(zt)
- Linux useradd 命令介紹Linux