How can I execute jq nested for-loops from bash?

I have 52 json files (r $ i.json) containing every 25 results (from 0 to 24). I would like to create a json file with a special name for each of these results. The name will be compiled according to the content of each of these results: YYYYMMDDHHMMSS_company_jobtitle.json

name generating commands work fine:

#!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

Now when I replace r1 with r $ i and add ((i = 1; I <= 52; j ++)), it does not work ... Therefore, I assume that my problem arises from the nested loop syntax in jq. ..

r1.json will look like this:

 {

    "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",
}

    ]
}
0
source share
3 answers

, , jq, , ... :

for ((i=1;i<=kdr;i++))
do
   for ((j=0;j<=24;j++))
   do
    datein=$(jq <"r$i.json" ".results[$j].date" | sed 's/"//g')
    dateout=$(date -d "${datein}" +"%Y%m%d%H%M%S")
    company=$(jq <"r$i.json" ".results[$j].company" | sed 's/,//g;s/"//g;s/ //g')
    job=$(jq <"r$i.json" ".results[$j].jobtitle" | sed 's/,//g;s/"//g;s/ //g')
    jq <"r$i.json" ".results[$j]" > ${dateout}_${company}_${job}.json
   done
done
0

bash for s:

for (( i=0; i<5; i++ ))

((i=1,i< =52,j++)) , ; ,.

+1

1) , i- ((i = 1; <= 52; j ++)); ((i-1; i<=52; i++))

2) , r1 r $i, , (1) , , , , , , , " > $outputname" " β†’ $outputname"?

3) , s/"//g -r jq; sed (jq 1.5 sub gsub).

4) , .

0

Source: https://habr.com/ru/post/1621361/


All Articles