Portál AbcLinuxu, 9. května 2025 06:03

Dotaz: Bash pole do jsonu za pomoci jq

2.7.2018 17:18 kukin
Bash pole do jsonu za pomoci jq
Přečteno: 369×
Odpovědět | Admin
Ahoj, snazim se dostat pole v bashi do jsonu ve formatu uvedenem nize. Pouzivam jq, bohuzel se mi to nedari, pomuze nekdo? Diky
arr=(jedna dva tri ctryi)
jq -n --arg v "$arr" '{"foo": "$v:22" | split("\n") }' > my.json 
my.json
[
  {
    "foo": [ "jedna:22", "dva:22", "tri:22" , "ctryi:22"],
  }
]

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.7.2018 17:49 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Bash pole do jsonu za pomoci jq
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obávám se, že to není zrovna nejlepší nápad. Nejdříve pracně nacpeš data do pole v Bashi a pak je pracně přepisuješ do JSONu. Nechceš to raději udělat přímo bez toho pole?
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
2.7.2018 20:29 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Bash pole do jsonu za pomoci jq
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ten json generátor neznám, ale "$arr" vrátí jen první položku, takže do té řádky s příkazem jq se ten zbytek ani nedostane. Všechny položky pole vrátí ${arr[@]} a jsou oddělený mezerama.
Intel meltdown a = arr[x[0]&1]; karma | 帮帮我,我被锁在中国房
wamba avatar 2.7.2018 21:06 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Bash pole do jsonu za pomoci jq
Odpovědět | | Sbalit | Link | Blokovat | Admin
podařilo se mi to takhle:
echo "jedna dva tri ctryi"| jq -nR '[{foo : inputs|split(" ")|map("\(.):22")}]'
ale stejně bych raději použil nějaký skriptovací z knihovnou pro JSON např.
perl6 -MJSON::Fast -e '(foo => (@*ARGS X~ ":22")).list.&to-json.put' jedna dva tri ctyri
This would have been so hard to fix when you don't know that there is in fact an easy fix.
3.7.2018 14:53 kukin
Rozbalit Rozbalit vše Re: Bash pole do jsonu za pomoci jq
Funguje. Diky. Problem je dependecich , jq uz k dispozici mam.
3.7.2018 15:57 fvdvb
Rozbalit Rozbalit vše Re: Bash pole do jsonu za pomoci jq
depentoch ... tak si daj do chrootu
Řešení 1× (jose17)
3.7.2018 22:27 .
Rozbalit Rozbalit vše Re: Bash pole do jsonu za pomoci jq
Odpovědět | | Sbalit | Link | Blokovat | Admin
$ jq -n --arg v "${arr[*]}" '[{ "foo": $v | split(" ") | map(. + ":22") }]'
[
  {
    "foo": [
      "jedna:22",
      "dva:22",
      "tri:22",
      "ctyri:22"
    ]
  }
]

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.