
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
答え1
JSONファイルを解析する正しい方法は、JSONパーサーを使用することです。これjq
便利これはコマンドラインとスクリプトのパーサーです:
jq -r '.properites.apps[]' apps.json
これは出力されます
apple
orange
mango
これを行うには、ファイル内のJSONドキュメントの最上位オブジェクトから配列要素を抽出する必要がありますjq
。このオプションを使用するには、JSONでエンコードされたデータではなく、「raw」データの出力が必要です。apps
properites
apps.json
-r
jq
1行にタブ区切りの出力を取得するには、次のようにします。
jq -r '.properites.apps | @tsv' file
これは出力されます
apple orange mango
この@tsv
演算子は配列を受け入れ、それをタブ区切りリストとして出力します。代わりに、を使用して@csv
正しく引用されたCSV出力を取得できます。
JSONドキュメント
{
"properites": {
"apps": [
"apple",
"orange",
"mango"
]
}
}
または
{"properites":{"apps":["apple","orange","mango"]}}
(同じJSONドキュメントと同じ形式です。)
答え2
あなたが使用できるpython
:
python -c '
import json, sys
data = json.load(sys.stdin)
for el in data["properites"]["apps"]:
print (el)
' < apps.json
答え3
答え4
grep -P
可能であれば、以下を使用することもできます。
grep -wF '"apps":' apps.json | grep -Po '[[,]"\K[^"]*'
ただし、これ(およびawk
@Carlosが提供するソリューション)は、入力が次の場合にのみ機能します。正確に示されているように、json
同じコンテンツの形式が異なるように指定されるわけではありません。
またはのモジュールjson
などの適切なパーサーを好む必要があります!jq
python
json