Awk
如何使用 awk 和 sed 讀取 JSON 文件中的列表
我在 JSON 文件中有一個列表
apps.json
:{ "properites":{ "apps":["apple","orange","mango"] } }
我需要閱讀這個文件並獲取對象。
我用了:
fwk_app = $( awk '/apps/{ print }' ${apps.json} | grep apps | awk -F: '{ print } substr($0, index($0,$2))}' |sed 's/(,*\)"[/\"]*$/\1/' ); for item in fwk_app: do echo"$item" done
輸出是:
mango
我需要的輸出是:
apple orange mango
解析 JSON 文件的正確方法是使用 JSON 解析器。該
jq
實用程序就是這樣一種解析器,可在命令行和腳本中使用:jq -r '.properites.apps[]' apps.json
這將輸出
apple orange mango
這要求在文件中的 JSON 文件中提取頂級對像中
jq
的數組元素。該選項要求輸出“原始”數據而不是 JSON 編碼的數據。apps``properites``apps.json``-r``jq
要在單行上獲得製表符分隔的輸出,請使用
jq -r '.properites.apps | @tsv' file
這將輸出
apple orange mango
運算符獲取一個數組並將其
@tsv
作為製表符分隔的列表輸出。您可以改為使用@csv
來獲得正確引用的 CSV 輸出。請注意,無論您的 JSON 文件是否是
{ "properites": { "apps": [ "apple", "orange", "mango" ] } }
或者
{"properites":{"apps":["apple","orange","mango"]}}
(這些是相同 JSON 文件的等效形式)。
你可以使用
python
:python -c ' import json, sys data = json.load(sys.stdin) for el in data["properites"]["apps"]: print (el) ' < apps.json