我有一個有很多條目的details.json檔案和一個 shops.txt檔案,如下所示。我希望有一個小腳本來比較兩個值,并只回傳匹配的json條目。
[
{
"userName"。"Anne",
"email": "[email protected]",
"公司": {
"name": "Stack GmbH",
},
"詳細資訊": {
"key": "EFHJKI-KJEFT-DHMNEB"。
"prod": "Car",
},
"store": {
"id": "05611a7f-a679-12ad-a3u2-0745e3650a03",
"storeName": "shop-a57ca0a3-120c-1a73-153b-fa4231cab768",
}
},
{
"userName": "Tom",
"email": "[email protected]",
"公司": {
"name": "Stack GmbH",
},
"詳細資訊": {
"key": "DFSGSE-FGEAR-GWRTGW"。
"prod": "Bike",
},
"store": null
},
]
這是另一個檔案" shops.txt"(里面可以有更多的商店)
shop-a57ca0a3-120c-1A73-153b-fa4231cab768
該腳本正在回圈瀏覽商店,對于每一個商店,它都會回圈瀏覽json,并且應該將currentShop與json中的store.shop進行比較,然后呼出用戶和商店。 但我不能訪問json中的具體引數。我怎樣才能做到這一點?
shops=" shops.txt"
while IFS= read -r line
do
currentShop="$line"。
jq -c '.[.userName, .store.storeName]' details.json | while read i; do
if [[$i.store.storeName == *$currentShop* ]]; then
echo $i.userName
echo $currentShop.
fi
done
done < "$shops"/span>
uj5u.com熱心網友回復:
首先,你可能想 "清理 "你的json,洗掉任何尾部的,等。
在回圈瀏覽檔案中的每一行之后,我們只需要一個
select()來獲取匹配的物件。
該腳本可以是這樣的:
#!/bin/bash
while read shop; do
echo "檢查。$shop"
jq -r --arg storeName "$shop" '. [] | select(.store.storeName =="($storeName)") | "(.userName) - (.store.storeName)"'/span> details.json
done < " shops.txt"
這將產生
檢查: shop-a57ca0a3-120c-1a73-153b-fa4231cab768
安妮 - shop-a57ca0a3-120c-1a73-153b-fa4231cab768
我想這可以合并為一個單一的jq呼叫,但似乎你想在找到的每個條目上進行回圈
你可以在這個jq選擇器上測驗這個在線JqPlay演示。
uj5u.com熱心網友回復:
我能夠用下面的命令來訪問這些值:
echo $i | jq -r ' .userName'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/308017.html
標籤:
下一篇:SQLORACLE的日期輸入
