yamlファイルがあります
info:
description: Api
contact:
name: Api
tags:
- name: ""
description: ""
paths:
/data1/1:
post:
tags:
- "tag1"
/data2/2:
post:
tags:
- "tag2"
/data3/3:
post:
tags:
- "tag3"
以下のキー数を取得したいです。paths:
鍵、つまり3
ここで。これはシェルスクリプトで必要です。
ベストアンサー1
「下のキー数paths
」は、セクションの下の最上位項目数を参照していると仮定しますpaths
。みんなキー数、すなわち12)。答えが終わったら、tags
アイテムの数を計算する方法を示します。
yq
以下で使用https://kislyuk.github.io/yq/:
yq '.paths|length' file.yml
出力は3
サンプル文書に使用されます。
式は配列を関数.paths|length
に渡します。この関数は配列の長さを返します。paths
length
シェル変数からこの数値を取得するには、単純なコマンド置換を使用します。
number_of_paths=$( yq '.paths|length' file.yml )
アイテム数の合計が必要な場合(最上位配列にあるよりも多いtags
可能性があります):paths
yq '[ .paths[].post.tags | length ] | add' file.yml
同様にyq
from を使用します。https://mikefarah.gitbook.io/yq/:
yq eval '.paths|length' file.yml
または変数に保存するには
number_of_paths=$( yq eval '.paths|length' file.yml )
tags
または、目的の配列長の合計の場合:
yq eval '[ .paths[].post.tags | length ] | .[] as $item ireduce(0; . + $item)' file.yml