bashとjqの初心者として、jshコマンドからbashスクリプトでいくつかのURLをダウンロードしようとしていました。jqを使用した複数のjsonキーの選択
マイitems.jsonファイルは次のようになります。私が最初にやった
[
{"title" : [bob], "link" :[a.b.c]},
{"title" : [alice], "link" :[d.e.f]},
{"title" : [carol], "link" :[]}
]
何がちょうど空でないリンクをフィルタリングし、配列に入れ、その後、アレイをダウンロードしました:
#!/bin/bash
lnk=($(jq -r '.[].link[0] | select (.!=null)' items.json))
for element in ${lnk[@]}
do
wget $element
done
しかし、このアプローチの問題は、ダウンロードされたすべてのファイルがリンクをファイル名として使用することです。
私はjsonファイルをフィルタリングしたいが、wgetコマンドでファイルの名前を変更できるように、リンクにタイトル名を残す。しかし、私はここでどのような構造を使うべきかについては考えていません。だから、どのように私はフィルタにタイトルを保持し、後にそれを使用することができますか?
提供されている「items.json」ファイルは有効なJSONではありません。有効な入力と期待される出力サンプルを入力してください。 –