Во-первых, показанный ввод не является ни действительным JSON, ни допустимым потоком документов JSON.Поскольку вы использовали ..|objects
, я предполагаю, что ваше намерение состояло в том, чтобы входные данные были массивом.
Во-вторых, опция -n означает: не читать STDIN или указанный файл автоматически.Поскольку вы использовали cat
, я опущу его.
В-третьих, вы использовали $ TESTDATE и $ test1 без указания значений выборки.Я собираюсь использовать переменные и значения, показанные ниже.
В-четвертых, обычно лучше передавать значения параметров с помощью параметра --arg или --argjson, как вы это сделали для $ TESTDATE, но не для $test1.
В-пятых, это второстепенный вопрос, но я потеряю cat
: смотри Бесполезное использование кошки?
Собираем все вместе,мы могли бы написать:
testdate="September 13, 2018"
testname="Artist Name"
< test.json jq -r --arg testdate "$testdate" --arg testname "$testname" '
.[]
| select((.Date == $testdate) and (.ArtistName | contains($testname)))
| .AlbumLink '
contains
, однако, это забавный зверь, и обычно я бы рекомендовал вместо него использовать index
.