我有一個格式如下的檔案:
{"cat":["bat","mat","hat"]}
{"dog":["frog","clog"]}
{"mouse":["house"]}
..等等等等,還有更多(約50多條)這樣的行。
我想獲取每行中的第一個單詞(例如 cat),然后在帶有該單詞的 URL 上運行 curl(例如 curl https://urlHere='"${animalVariableHere}"),所以第一個單詞來自每一行應放入“${animalVariableHere}”的 URL 中。在該 URL 上運行 curl 后,我想獲得該輸出(卷曲 URL 會在 JSON 中提供一行 - 例如 {"type":"animal,"info":{"house pet","furry"," brown"}}),尤其是“資訊”部分,放入一個類似于以下內容的新檔案中:
"cat": "house pet","furry","brown"
因此,使用上面 3 個輸入行的最終輸出將是:
"cat": "house pet","furry","tabby"
"dog": "house pet","furry","golden retriever"
"mouse": "house pet","tail","pygmy"
到目前為止,我已經嘗試查看是否可以使用“awk”命令來獲取每行中的第一個單詞,但它根本不起作用/我不完全確定我剛剛學習 shell 的方式腳本。但是每個單詞都有一次,我只是在想管道它,即:
<first word> | curl 'https://urlHere'"${animalVariableHere}" | jq -r '.info' | tee -a outputFile
我也不確定如何將動物變數與資訊的輸出相匹配。任何幫助將不勝感激,謝謝
uj5u.com熱心網友回復:
您將需要一個可以決議 JSON 的工具。
例如jq
#!/bin/bash
while IFS='' read -r animal
do
curl "https://urlHere=$animal" |
jq --arg a "$animal" '$a ": " (.info | join(", "))'
done < <(jq -r 'keys[0]' file.json) > output.json
uj5u.com熱心網友回復:
使用jq,keys_unsorted[0]將為您提供第一個鍵,并--arg允許您從外部匯入值。使用bash,您可以使用 逐行回圈while。
jq -r 'keys_unsorted[0]' input.json | while read -r animalVariableHere
do curl 'https://urlHere'"${animalVariableHere}" \
| jq --arg id "${animalVariableHere}" -r '@csv "\([$id]): \(.info)"'
done > output.txt
這假設curl輸出是有效的 JSON,即它看起來更像{"type":"animal","info":["house pet","furry","brown"]}.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/465351.html
