国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux shell jq工具(shell讀取json、shell腳本讀取json、shell json、json工具)

這篇具有很好參考價值的文章主要介紹了Linux shell jq工具(shell讀取json、shell腳本讀取json、shell json、json工具)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

jq工具安裝

在線安裝

sudo apt-get install jq # Ubuntu 系統(tǒng)

離線安裝

如果你的服務器沒有聯(lián)網(wǎng),則無法使用包管理器來安裝 jq 工具。不過,你仍然可以通過以下步驟手動安裝 jq 工具:

  1. 在另一臺聯(lián)網(wǎng)的計算機上下載 jq 的二進制文件??梢栽?jq 的官方網(wǎng)站上找到適合你服務器架構的二進制文件。例如,如果你的服務器是 x86 64 位架構,則可以在以下鏈接中下載 jq 的二進制文件:
    https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64

其他版本下載點這:https://github.com/jqlang/jq/releases/

  1. 將下載的二進制文件傳輸?shù)侥姆掌?。你可以使?scp 命令或其他文件傳輸工具將文件傳輸?shù)椒掌鳌@?,如果你的服務器?IP 地址是 192.168.0.100,你可以使用以下命令將文件傳輸?shù)椒掌鳎?/li>
scp jq-linux64 user@192.168.0.100:/home/user/

其中,user 是你在服務器上的用戶名,/home/user/ 是你在服務器上的目標目錄。

  1. 在服務器上設置 jq 的執(zhí)行權限。使用以下命令將 jq 文件設置為可執(zhí)行:
chmod +x /home/user/jq-linux64
  1. 將 jq 文件復制到你的 PATH 路徑中。使用以下命令將 jq 文件復制到 /usr/local/bin/ 目錄中:
sudo cp /home/user/jq-linux64 /usr/local/bin/jq

現(xiàn)在,你可以在服務器上使用 jq 工具了。

使用方法

讀取和修改 JSON 文件中的一個字段(麻煩)

#!/bin/bash

# 讀取 JSON 文件內容
json=$(cat example.json)

# 使用 jq 工具修改其中的字段
new_json=$(echo $json | jq '.field_to_modify = "new_value"')

# 將修改后的 JSON 內容寫回文件中
echo $new_json > example.json

在上面的示例腳本中,我們首先使用 cat 命令讀取 JSON 文件 example.json 的內容,并將其存儲在一個變量 json 中。接下來,我們使用 jq 工具修改 JSON 中的一個字段,例如將名為 field_to_modify 的字段的值修改為 “new_value”。最后,我們將修改后的 JSON 內容寫回到原始文件中。

請注意,使用 jq 工具需要在系統(tǒng)上安裝該工具。如果您的系統(tǒng)上沒有安裝 jq,您可以使用以下命令進行安裝:

讀取和修改 JSON 文件中的一個字段(簡潔)1

需求:

將json文件ky_ai_solution.json文件中的ServerIpPort的ip改成192.168.1.100,json文件內容如下:

(ky_ai_solution.json)

{
    "LocalIpPort": "0.0.0.0:17751",
    "ServerIpPort": "192.168.1.140:7777",
    "aiSolution": 2,
    "algoAppPath": "cw",
    "isapiPath": "kyai",
    "packagePath": "/ky/alg/"
}

(run.sh)

#!/bin/bash

# 讀取 json 文件并修改 ServerIpPort 字段
jq '.ServerIpPort = "192.168.1.100:7777"' ky_ai_solution.json > tmp.json && mv tmp.json ky_ai_solution.json

這個腳本使用了 jq 工具來讀取和修改 JSON 文件。首先,它將 ServerIpPort 字段的值更改為 192.168.1.100:7777,然后將修改后的 JSON 內容重定向到臨時文件 tmp.json 中。最后,它使用 mv 命令將 tmp.json 文件重命名為 ky_ai_solution.json,以覆蓋原始文件。

請確保將腳本中的文件名 ky_ai_solution.json 替換為你實際使用的 JSON 文件名。另外,如果你需要修改不同的字段或值,請相應地修改 jq 命令中的參數(shù)。

讀取和修改 JSON 文件中的一個字段(簡潔)2

需求:

將json文件ky_ai_solution.json文件中的CameraID的改成192dfdsfdsfdsf,json文件內容如下:

(ky_ai_solution.json)

{
    "CameraInfos": [
        {
            "CameraID": "CAMERAID_001",
            "Running": "1",
            "AlgorithmName": "AlgoType1",
            "SubAlgoName": "behavior.structured.data",
            "RtspAddress": "rtsp://admin:xxx@192.168.1.90:554/Streaming/Channels/101",
            "DeptID": "Dept_001",
            "AddrID": "Addr_001"
        }
    ]
}

(run.sh)

#!/bin/bash

# 讀取 json 文件并修改 CameraID 字段
jq '.CameraInfos[0].CameraID = "192dfdsfdsfdsf"' ky_ai_solution.json > tmp.json && mv tmp.json ky_ai_solution.json

這個腳本使用了 jq 工具來讀取和修改 JSON 文件。它先選擇 CameraInfos 數(shù)組中的第一個元素,然后將 CameraID 字段的值更改為 192dfdsfdsfdsf。最后,它將修改后的 JSON 內容重定向到臨時文件 tmp.json 中,并使用 mv 命令將 tmp.json 文件重命名為 ky_ai_solution.json,以覆蓋原始文件。

請注意,如果 CameraInfos 數(shù)組中有多個元素,則需要根據(jù)需要修改 jq 命令以處理所有元素。另外,如果你需要修改不同的字段或值,請相應地修改 jq 命令中的參數(shù)。

20230329 這個稍復雜,讀取json并替換另一個json字段一部分,加入了正則表達式

我有一個config.json,內容如下:
{
“ServerIp”: “192.168.1.140”
}
還有一個param.txt文件,內容如下:
{
“engineAddress”: “192.168.1.91:20228”,
“mediaServerAddress”: “192.168.1.91:17080”,
“l(fā)ogLevel”: “INFO”,
“l(fā)ocalAddress”: “0.0.0.0:23031”,
“queueSize”: 1024
}
我需要一個shell腳本,用jq工具將config.json文件中ServerIp字段的值提取出來,然后將它替換param.txt中的engineAddress和mediaServerAddress中的ip

#!/bin/bash

# 從config.json文件中讀取ServerIp字段的值
server_ip=$(jq -r '.ServerIp' config.json)

# 替換param.txt文件中engineAddress字段中的ip部分
jq --arg ip "$server_ip" '.engineAddress |= sub("[^:]+"; $ip)' param.txt > tmp.json

# 替換更新后的內容
mv tmp.json param.txt

# 替換param.txt文件中mediaServerAddress字段中的ip部分
jq --arg ip "$server_ip" '.mediaServerAddress |= sub("[^:]+"; $ip)' param.txt > tmp.json

# 替換更新后的內容
mv tmp.json param.txt

解釋一下這個腳本的幾個步驟:

  • 使用jq工具從config.json文件中讀取ServerIp字段的值,并將其保存在server_ip變量中。

  • 使用jq工具更新param.txt文件中engineAddress字段的值。這里使用了–arg選項將server_ip變量傳遞給jq,然后使用sub函數(shù)將engineAddress字段中原有的ip部分替換為server_ip變量中保存的值。

  • 將更新后的內容保存在一個臨時文件中,然后將其覆蓋原文件。

  • 使用jq工具更新param.txt文件中mediaServerAddress字段的值。這里同樣使用了–arg選項將server_ip變量傳遞給jq,然后使用sub函數(shù)將mediaServerAddress字段中原有的ip部分替換為server_ip變量中保存的值。

  • 將更新后的內容保存在一個臨時文件中,然后將其覆蓋原文件。

jq內置函數(shù)|=sub
|=:更新某個字段的值

|= 表示更新某個字段的值。具體而言,它接受兩個參數(shù):第一個參數(shù)是要更新的字段的名稱或路徑,第二個參數(shù)是新的值或更新字段的表達式。如果第二個參數(shù)是一個表達式,則表達式的值將被用作新的字段值。如果第二個參數(shù)是一個常量,則常量將被用作新的字段值。

例如,假設我們有一個JSON對象 obj,它有一個字段 foo 的值為 10。要將 foo 的值加上 5,可以使用以下命令:

echo '{"foo": 10}' | jq '.foo |= .+5'

結果:

{
  "foo": 15
}

這里的 |= .+5 就是一個更新字段的表達式,它表示將原來的字段值加上 5。

sub:替換字符串

sub 函數(shù)是用來替換字符串的。它接受兩個參數(shù):第一個參數(shù)是正則表達式,第二個參數(shù)是要替換成的字符串。具體而言,它會在輸入的字符串中查找與正則表達式匹配的部分,并將其替換為指定的字符串。

例如,假設我們有一個字符串 "foo:123",我們想將其中的數(shù)字替換為 "456",可以使用以下命令:

echo 'foo:123' | jq 'sub("[0-9]+"; "456")'

結果:

foo:456
關于正則表達式[0-9]+

[0-9]+ 是一個正則表達式,表示匹配一個或多個數(shù)字字符。具體而言,它包含兩個部分:

[0-9] 表示匹配任意一個數(shù)字字符,也可以寫成 \d。
+ 表示匹配前面的字符(這里是數(shù)字字符)一次或多次。
因此,[0-9]+ 表示匹配一個或多個數(shù)字字符,例如 123、4567 等。在 sub 函數(shù)中,它被用來匹配輸入字符串中的數(shù)字部分,以便進行替換。

其他(直接把兩個替換做到一起)
# 獲取jq工具路徑
JQ_TOOL="${SCRIPT_PATH}/${DEPLOY_DIR}/tools/jq/jq-linux64"

# 讀取ServerIp字段的值
NEW_SERVER_IP=$(${JQ_TOOL} -r '.ServerIp' "${SCRIPT_PATH}/${CONFIG_FILE}")

# 校驗ServerIp

# 將NEW_SERVER_IP寫入ky_ai_solution.json
OLD_SERVER_PORT=$(${JQ_TOOL} -r '.ServerIpPort' "${KY_AI_SOLUTION_JSON_PATH}" | awk -F':' '{print $2}')
NEW_SERVER_IP_PORT="${NEW_SERVER_IP}:${OLD_SERVER_PORT}"
${JQ_TOOL} ".ServerIpPort = \"${NEW_SERVER_IP_PORT}\"" "${KY_AI_SOLUTION_JSON_PATH}" > tmp.json && mv tmp.json "${KY_AI_SOLUTION_JSON_PATH}" && chmod 777 "${KY_AI_SOLUTION_JSON_PATH}"

上面最后三句可直接合并為一句:

${JQ_TOOL} --arg ip "$NEW_SERVER_IP" '.ServerIpPort |= sub("[^:]+"; $ip)' "${KY_AI_SOLUTION_JSON_PATH}" >tmp.txt &&
    mv tmp.txt "${KY_AI_SOLUTION_JSON_PATH}" &&
    chmod 777 "${KY_AI_SOLUTION_JSON_PATH}"

jq的編譯

x86版本的我直接下載jq-linux64下來就能跑了:

Linux shell jq工具(shell讀取json、shell腳本讀取json、shell json、json工具)

但是在arm下,還得自行編譯,我下載這個源碼:

Linux shell jq工具(shell讀取json、shell腳本讀取json、shell json、json工具)

然后拷貝到系統(tǒng)里,tar -xzf jq-1.6.tar.gz解壓:

Linux shell jq工具(shell讀取json、shell腳本讀取json、shell json、json工具)

然后我參考里面這個readme.md:

Linux shell jq工具(shell讀取json、shell腳本讀取json、shell json、json工具)

然后執(zhí)行這幾條編譯命令:

Linux shell jq工具(shell讀取json、shell腳本讀取json、shell json、json工具)

執(zhí)行這四條就可以了(一開始沒執(zhí)行autoreconf -fi給我報了一堆錯誤):

autoreconf -fi              # if building from git
./configure --with-oniguruma=builtin
make -j8
make check

然后最終可執(zhí)行文件生成在這:

Linux shell jq工具(shell讀取json、shell腳本讀取json、shell json、json工具)

我把它拷貝到目標位置再改名成jq-linux64

注意,我不太清楚我們arm NX ubuntu20.04和ubuntu18.04的盒子有啥區(qū)別,我把在20.04上編譯生成的文件拷貝到18.04上,還用不了。。。文章來源地址http://www.zghlxwxcb.cn/news/detail-510200.html

到了這里,關于Linux shell jq工具(shell讀取json、shell腳本讀取json、shell json、json工具)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 常用的 55 個 Linux Shell 腳本(包括基礎案例、文件操作、實用工具、圖形化、sed、gawk)

    1、第一個案例:helloworld 2、打印運行的python進程 3、獲取并打印參數(shù) 4、用腳本寫for循環(huán) 5、使用C語言風格的for命令 6、while循環(huán)案例 7、使用break跳出外部循環(huán) 8、使用continue命令 9、case案例 10、判斷兩個數(shù)是否相等 11、使用雙圓括號 12、使用雙方括號 13、反引號的使用 14、字

    2024年02月07日
    瀏覽(22)
  • linux 基于 RHEL 的 Linux 發(fā)行版(例如 CentOS 和 Fedora)上用 shell 腳本安裝 elasticsearch 指南

    使用基于 RHEL 的 Linux 發(fā)行版(例如 CentOS 和 Fedora)操作系統(tǒng)。 擁有root權限或者sudo權限。 1.首先,創(chuàng)建一個名為install_elasticsearch.sh的文件,并打開該文件以編輯 2.然后,將以下內容粘貼到install_elasticsearch.sh文件中 3.保存并關閉文件 4.運行安裝腳本 5.等待腳本執(zhí)行完成,這可能

    2024年02月01日
    瀏覽(26)
  • shell腳本while循環(huán)、read讀取控制臺輸入與函數(shù)

    shell腳本while循環(huán)、read讀取控制臺輸入與函數(shù)

    聲明: 以下為個人筆記,內容不完全正確,請謹慎參考。 while循環(huán)結構 while [條件判斷] do 程序 done 腳本示例: 點擊查看代碼 簡易寫法: 點擊查看代碼 read 讀取控制臺輸入 基本語法: read(選項)(參數(shù)) 1、選項 -p: 指定讀取值時的字符; -t: 指定讀取值等待時間(秒-s)如

    2024年04月22日
    瀏覽(25)
  • shell腳本文本處理工具

    shell腳本文本處理工具

    聲明: 以下內容為個人筆記,內容不完全正確,請謹慎參考。 cut: cut 工作是“剪”,具體來說就是在文件中負責剪切數(shù)據(jù)。cut 命令從文件的每個行剪切字節(jié)、字符和字段輸出。 1、基本語法: cut [選項參數(shù)] filename 說明:默認分隔符是副表符 2、選項參數(shù)說明 選項參數(shù):1)

    2024年04月25日
    瀏覽(18)
  • 在線Excel轉JSON工具

    在線Excel轉JSON工具

    在線Excel轉JSON工具 上傳excel將數(shù)據(jù)轉換成json格式

    2024年02月07日
    瀏覽(19)
  • Shell工具腳本-生成文件&下載資源并解析

    主要包含功能如下: 1.自動生成文件 2.下載文件并解析 # ?@Author: lvzhihong # ?@Date: 2023-08-29 08:43:41 #! /bin/bash #config project_code=(\\\"23861\\\" ?\\\"23862\\\" \\\"23863\\\") project_out_root=\\\"aon_project_output\\\" project_apk_url=\\\"xxx/2023082904130232_APP_INFO_repo_10010111.xml\\\"; declare -A aon_module_feature_map aon_module_feature_map[\\\"gaze\\\"]=\\\"

    2024年02月11日
    瀏覽(23)
  • NVIDIA GPU驅動和CUDA工具包 Linux CentOS 7 在線安裝指南

    NVIDIA GPU驅動和CUDA工具包 Linux CentOS 7 在線安裝指南

    挑選指定系統(tǒng)和對應的GPU型號下載驅動和CUDA工具包:?Linux CentOS安裝NVIDIA GPU驅動程序和NVIDIA CUDA工具包_centos安裝顯卡驅動和cuda_Entropy-Go的博客-CSDN博客 相比之下,本文是在線安裝NVIDIA GPU驅動和CUDA工具包方式,省去挑選對應正確安裝包的煩惱。 Nvidia官網(wǎng)指導:?NVIDIA CUDA Insta

    2024年02月04日
    瀏覽(29)
  • 【Linux】shell腳本和bat腳本:

    【Linux】shell腳本和bat腳本:

    一、腳本對應環(huán)境: 【1】shell:linux環(huán)境;后綴名為.sh 主要用在linux中,而linux系統(tǒng)對應的shell又有很多,如Bourne Shell(/usr/bin/sh或/bin/sh),又如Bourne Again Shell(/bin/bash)由于Bourne Again Shell(/bin/bash)免費且易用,故使用較多。 對應的腳本文件后綴名為.sh。 注: #! 告訴系統(tǒng)其

    2024年02月09日
    瀏覽(22)
  • 【Linux之Shell腳本實戰(zhàn)】Linux創(chuàng)建新用戶腳本

    1.要求用戶輸入用戶名和密碼,新建用戶; 2.如果用戶沒有輸入,則提醒退

    2023年04月17日
    瀏覽(13)
  • 【Linux命令-shell】虛擬機中創(chuàng)建shell腳本、查看當前路徑、執(zhí)行腳本

    目錄 一、創(chuàng)建shell腳本 二、查看當前的路徑 三、執(zhí)行腳本 一、創(chuàng)建shell腳本 shell腳本的特點 提前將可執(zhí)行的命令語句寫入一個文件中 順序執(zhí)行 解釋器逐行解釋代碼 常見的腳本有:shell、python、PHP...... 注:用什么解釋器就是什么腳本 編寫shell腳本: 步驟: 1、新建文件 2、

    2024年02月05日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包