最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

linux命令下jq的用法及說明

 更新時間:2023年12月11日 09:36:06   作者:香山上的麻雀1008  
這篇文章主要介紹了linux命令下jq的用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

jq簡介

jq可以對json數(shù)據(jù)進行分片、過濾、映射和轉(zhuǎn)換,和sed、awk、grep等命令一樣,都可以讓你輕松地把玩文本。

它能輕松地把你擁有的數(shù)據(jù)轉(zhuǎn)換成你期望的格式,而且需要寫的程序通常也比你期望的更加簡短。

jq是用C編寫,沒有運行時依賴,所以幾乎可以運行在任何系統(tǒng)上。

預(yù)編譯的二進制文件可以直接在Linux、OS X和windows系統(tǒng)上運行,當(dāng)然在linux和OS X系統(tǒng)你需要賦與其可執(zhí)行權(quán)限;在linux系統(tǒng)中也可以直接用yum安裝。

下載頁面:

https://stedolan.github.io/jq/download/

在知道jq命令之前,我在linux系統(tǒng)中極少直接去命令去處理json數(shù)據(jù),除非只是簡單地從中過濾某個字符串,那就用grep結(jié)合正則表達式來解決。

所以,掌握了jq命令,則可以讓linux命令和shell腳本在處理json數(shù)據(jù)時變得得心應(yīng)手。

jq簡明教程

例子文件

為了便于演示jq的功能,我們在文件json.txt中保存如下內(nèi)容:

cat json.txt 
[{"name":"站長工具","url":"http://tool.chinaz.com","address":{"city":"廈門","country":"中國"},"arrayBrowser":[{"name":"Google","url":"http://www.google.com"},{"name":"Baidu","url":"http://www.baidu.com"}]},{"name":"站長之家","url":"http://tool.zzhome.com","address":{"city":"大連","country":"中國"},"arrayBrowser":[{"name":"360","url":"http://www.so.com"},{"name":"bing","url":"http://www.bing.com"}]}]

為了讓你理解文件中的內(nèi)容,對比jq的效果,在json解析工具中顯示為:

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

cat json.txt | jq '.'
[
  {
    "name": "站長工具",
    "url": "http://tool.chinaz.com",
    "address": {
      "city": "廈門",
      "country": "中國"
    },
    "arrayBrowser": [
      {
        "name": "Google",
        "url": "http://www.google.com"
      },
      {
        "name": "Baidu",
        "url": "http://www.baidu.com"
      }
    ]
  },
  {
    "name": "站長之家",
    "url": "http://tool.zzhome.com",
    "address": {
      "city": "大連",
      "country": "中國"
    },
    "arrayBrowser": [
      {
        "name": "360",
        "url": "http://www.so.com"
      },
      {
        "name": "bing",
        "url": "http://www.bing.com"
      }
    ]
  }
]

[index]

輸出列表中的第一個元素,可以使用[index]:

cat json.txt | jq '.[0]'

{
  "name": "站長工具",
  "url": "http://tool.chinaz.com",
  "address": {
    "city": "廈門",
    "country": "中國"
  },
  "arrayBrowser": [
    {
      "name": "Google",
      "url": "http://www.google.com"
    },
    {
      "name": "Baidu",
      "url": "http://www.baidu.com"
    }
  ]
}

管道線 |

jq支持管道線 |,它如同linux命令中的管道線——把前面命令的輸出當(dāng)作是后面命令的輸入。

如下命令把.[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的輸出當(dāng)作一個數(shù)組,可以在前后加上[]:

cat json.txt | jq "[.[] | {name:.arrayBrowser[1].name,city:.address.city}]"
[
  {
    "name": "Baidu",
    "city": "廈門"
  },
  {
    "name": "bing",
    "city": "大連"
  }
]

自定義key

在{}中,冒號前面的名字是映射的名稱,你可以任意修改,如:

cat json.txt | jq "[.[] | {name_001:.arrayBrowser[1].name,city_002:.address.city}]"

[
  {
    "name_001": "Baidu",
    "city_002": "廈門"
  },
  {
    "name_001": "bing",
    "city_002": "大連"
  }
]

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于cobbler 實現(xiàn)自動安裝linux系統(tǒng)

    基于cobbler 實現(xiàn)自動安裝linux系統(tǒng)

    這篇文章主要介紹了cobbler 自動安裝linux系統(tǒng)的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • 阿里云服務(wù)器yum源更新問題從何而來

    阿里云服務(wù)器yum源更新問題從何而來

    阿里云服務(wù)器yum源的更新問題,問題從何而來的呢?下面通過本文給大家介紹阿里云服務(wù)器yum源更新問題,一起看看吧
    2016-05-05
  • 使用wget遞歸鏡像網(wǎng)站

    使用wget遞歸鏡像網(wǎng)站

    wget這個命令可以以遞歸的方式下載整站,并可以將下載的頁面中的鏈接轉(zhuǎn)換為本地鏈接。
    2017-07-07
  • Linux中修改mysql默認(rèn)編碼的方法步驟

    Linux中修改mysql默認(rèn)編碼的方法步驟

    今天小編就為大家分享一篇關(guān)于Linux中修改mysql默認(rèn)編碼的方法步驟,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 淺談Linux的虛擬內(nèi)存

    淺談Linux的虛擬內(nèi)存

    現(xiàn)代操作系統(tǒng)中,多任務(wù)已是標(biāo)配。多任務(wù)并行,大大提升了 CPU 利用率,但卻引出了多個進程對內(nèi)存操作的沖突問題,虛擬內(nèi)存概念的提出就是為了解決這個問題。
    2021-05-05
  • Linux網(wǎng)絡(luò)--傳輸層--TCP協(xié)議基礎(chǔ)詳解

    Linux網(wǎng)絡(luò)--傳輸層--TCP協(xié)議基礎(chǔ)詳解

    這篇文章主要介紹了Linux網(wǎng)絡(luò)--傳輸層--TCP協(xié)議基礎(chǔ),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • apache中的Worker 和 Prefork 之間的區(qū)別解析

    apache中的Worker 和 Prefork 之間的區(qū)別解析

    Apache中的Worker和Prefork兩種工作模式在內(nèi)存使用、穩(wěn)定性以及兼容性等方面存在區(qū)別,本文介紹apache中的Worker 和 Prefork 之間的區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • linux下如何將無線網(wǎng)卡工作模式切換為監(jiān)聽模式

    linux下如何將無線網(wǎng)卡工作模式切換為監(jiān)聽模式

    這篇文章主要介紹了linux下如何將無線網(wǎng)卡工作模式切換為監(jiān)聽模式問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • PHP腳本內(nèi)存泄露導(dǎo)致Apache頻繁宕機解決方法

    PHP腳本內(nèi)存泄露導(dǎo)致Apache頻繁宕機解決方法

    這篇文章主要介紹了PHP腳本內(nèi)存泄露導(dǎo)致Apache頻繁宕機解決方法,本文的原因是因為MaxRequestsPerChild參數(shù)沒有配置正確,配置MaxRequestsPerChild后解決了本文中的問題,需要的朋友可以參考下
    2014-09-09
  • Linux服務(wù)器配置Chron實現(xiàn)同步時間的詳細(xì)教程

    Linux服務(wù)器配置Chron實現(xiàn)同步時間的詳細(xì)教程

    在生產(chǎn)環(huán)境中,時間準(zhǔn)確性至關(guān)重要,無論是應(yīng)用日志、數(shù)據(jù)庫事務(wù)還是分布式系統(tǒng)的協(xié)調(diào),都依賴于統(tǒng)一的時間,因此,配置 自動時間同步 是運維的基礎(chǔ)工作之一,本文將詳細(xì)介紹如何在 Linux 服務(wù)器上使用 Chrony 來實現(xiàn)高精度的時間同步,需要的朋友可以參考下
    2025-12-12

最新評論

东丰县| 安顺市| 岐山县| 沽源县| 阳江市| 电白县| 荥经县| 镇雄县| 张家口市| 镇远县| 女性| 青冈县| 济阳县| 卢氏县| 岑溪市| 镇安县| 柳林县| 泾源县| 岢岚县| 岑溪市| 昔阳县| 禹州市| 进贤县| 晋城| 孟村| 资源县| 资源县| 股票| 信丰县| 富平县| 化隆| 呼伦贝尔市| 石河子市| 中牟县| 江永县| 武清区| 镶黄旗| 天镇县| 泽普县| 三穗县| 衡山县|