awkとsedを使用してJSONファイルからリストを読み取る方法

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

ベストアンサー1

JSONファイルを解析する正しい方法は、JSONパーサーを使用することです。これjq便利これはコマンドラインとスクリプトのパーサーです:

jq -r '.properites.apps[]' apps.json

これは出力されます

apple
orange
mango

これを行うには、ファイル内のJSONドキュメントの最上位オブジェクトから配列要素を抽出する必要がありますjq。このオプションを使用するには、JSONでエンコードされたデータではなく、「raw」データの出力が必要です。appsproperitesapps.json-rjq

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ドキュメントと同じ形式です。)

おすすめ記事