1

次のような JSON があります。

{
  "files": [
    { "size": 3227238, "name": "file1.mp3" },
    { "size": 3737995, "name": "file2.mp3" }
  ],
  "id": "music"
}

そして、各ファイルを独自の行に出力したいのですが、外側の要素の id を含めます。

file1.mp3 music
file2.mp3 music

次のようなファイル属性を取得できます。

jq -r '.files | .[] | .name'

しかし、各行に id を含めるにはどうすればよいですか?

4

1 に答える 1

1

このフィルターを使用できます:

"\(.files[].name) \(.id)"

これにより、名前と外部 ID を含む各ファイルの文字列が生成されます。

-rおそらく生の出力を取得したいので、フラグを忘れないでください。

各ファイルから名前以外のものを取得したい場合は、フィルターを調整する必要があります。重要なのは.[]、フィルターの任意の部分内で最大 1 回使用することです。文字列の各部分を配置する場所に応じて、いくつかの方法があります。

それらがすべて文字列の一部にまとめられている場合は、必要なプロパティを組み合わせた別の文字列を追加できます。

"\(.files[] | "\(.name) \(.size)") \(.id)"

それ以外の場合は、変数を導入する方が簡単です。

.id as $id | .files[] | "\(.name) \($id) \(.size)"
于 2015-03-13T14:25:16.860 に答える