У меня есть 52 файла json (r $ i.json), содержащий каждый 25 результатов (от 0 до 24). Я хотел бы создать json-файл со специальным именем для каждого из этих результатов. Имя будет состоять в соответствии с содержанием каждого из этих результатов: YYYYMMDDHHMMSS_company_jobtitle.jsonКак я могу выполнить jq вложенные for-loops из bash?
команда генерации имен работают отлично:
#!bin/bash
for ((j=0;j<=24;j++))
do
datein=$(jq <"r1.json" ".results[$j].date" | sed 's/"//g')
dateout=$(date -d "${datein}" +"%Y%m%d%H%M%S")
company=$(jq <"r1.json" ".results[$j].company" | sed 's/,//g;s/"//g;s/ //g')
job=$(jq <"r1.json" ".results[$j].jobtitle" | sed 's/,//g;s/"//g;s/ //g')
jq <"r1.json" ".results[$j]" > ${dateout}_${company}_${job}.json
done
Теперь, когда я заменить r1 на г $ г и добавить ((I = 1; я < = 52; j ++)) это не работает ... Так что я думаю, что моя проблема возникает из вложенного синтаксиса цикла в JQ ...
r1.json будет выглядеть так:
{
"radius" : 25,
"totalResults" : 1329,
"results" : [
{
"jobtitle" : "job1",
"company" : "company1,
"date" : "Sun, 01 Sep 2015 07:59:58 GMT",
}
,
{
"jobtitle" : "job2",
"company" : "company2",
"date" : "Sun, 02 Sep 2015 07:59:58 GMT",
}
,
|...]
{
"jobtitle" : "job25",
"company" : "company25,
"date" : "Sun, 25 Sep 2015 07:59:58 GMT",
}
]
}
Вы понимаете, что вы могли бы сделать всю эту логику только в одном вызове 'jq' (для каждого выходного файла)? Это гораздо более мощный скриптовый язык, чем вы здесь считаете. –
Кроме того, «не работает» - ** как ** он не работает? Покажите точное сообщение об ошибке, если вы его получите. –
Спасибо @CharlesDuffy теперь он работает. Мне было бы интересно узнать больше о jq-скриптинговом языке. У вас есть хорошие ссылки для обмена? – crocefisso