Skip to content
Snippets Groups Projects
Commit 77cea88f authored by VAN-KOTE ELSA's avatar VAN-KOTE ELSA
Browse files

ajout des tests pour l'extraction de données json avec l'outil jq en cli

parent fce3eeb6
Branches
1 merge request!13ajout des tests pour l'extraction de données json avec l'outil jq en cli
Pipeline #178575 passed with stage
in 17 seconds
for $docname in db:list('annotations')
return
let $doc := doc('annotations/' || $docname)
for $resource in $doc//*:resources
let $chars := string-join($resource//*:chars, '|')
let $item := string-join($doc//*:value, '|')
return $docname || ',' || $chars
\ No newline at end of file
for $docname in db:list('annotations')
return
let $doc := doc('annotations/' || $docname)
let $resources := $doc//*:resources
let $resource := $resources/*:resource
let $chars := string-join($resources//*:chars, ',')
let $item := string-join($resources//*:item, ',')
for $resources in $doc
return $docname || '|' || $chars || '|' || $item
\ No newline at end of file
# Notes sur l'utilisation de l'outil jq pour parser du json
récupérer les valeurs de l'item :
jq ".resources[] .on[] .selector .item .value" p36.json
jq '.resources[].resource, .resources[].on' p36.json
`jq '.resources[].resource[].chars, .resources[].on[].selector.item.value' p36.json` : donne à la suite les différentes valeurs de `chars` puis de `value` dans tout le document.
Pour éviter d'avoir ces résultats à la suite, j'ai créé deux scripts pour chercher séparement les annotations (`script_chars`) et le id des détours correspondants (`script_value`).
**le problème est que je devais répéter la commande en changeant à chaque fois le fichier .json, car je ne savais pas comme exécuter la commande en une seule fois pour tous les fichiers**.
Puis j'ai créé un script qui vient coller les résultat "chars" et "value" ensemble pour créer un csv (`script_csv`).
Enfin, j'ai essayé de coller tous les csv les uns après les autres avec l'outil `paste` indiqué plus bas mais j'avais un décalage à un moment donné. J'ai donc du le faire à la main...
Pour coller deux fichiers ensemble l'un après l'autre et non pas sous forme de colonnes, il faut ajouter les options 's' et 'z' :
paste -sz p46.csv p106-107.csv > xo.csv
## À faire
Demande à Régis et Arhur :
- comment executer mes scripts sur tous les fichiers en une seule commande.
- cette histoire de décalage dans le résultat du paste final.
# /bin/sh
FILE=$1
jq '.resources[].resource[].chars' $1.json > $1_chars
# /bin/sh
FILE=$1
paste -d '|' $1_chars $1_value > $1.csv
# /bin/sh
FILE=$1
jq '.resources[].on[].selector.item.value' $1.json > $1_value
File added
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment