5505 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
page 1 / 1
  • jq : gsub() échoue sur certains caractères Unicode

    Voir mon introduction à la prise en main de jq, le logiciel de manipulation de JSON en ligne de commande.

    Soit le fichier JSON africa-coast-to-europe-ace.json.

    Avec jq version 1.5.1 Debian GNU/Linux Buster, je veux récupérer la valeur de l'attribut « owners » sous la forme d'une unique chaîne de caractère. Je voudrais que la séparation entre chaque propriétaire ne soit plus « , », mais « \n * » (afin de produire une liste à puces).

    Facile, il suffit d'utiliser la fonction gsub(), greedy sub(), qui permet de remplacer des bouts de chaînes de caractères. Sauf que…

    $ jq -r '.owners | " * \(gsub(", ";"\n *"))"' africa-coast-to-europe-ace.json
     * Orange
     * Dolphin Telecom
     * Cote d’Ivoire Telec
     *
     * Gambia Submarine Cable Company
     * MTN
    […]

    Hum, il y a un raté pour Cote d'Ivoire Telecom.

    Je t'épargne l'identification du problème avec hexdump -C et jq -a (afficher le code séquence d'un caractère non-ASCII) : ce modèle d'apostrophe n'est pas un caractère ASCII mais Unicode.

    Normalement, ça ne devrait pas poser de problème puisque jq travaille, par défaut, en UTF-8 (d'après son manuel). De plus, file -i est formel, le fichier utilisé est bien encodé en UTF-8. Même si j'utilise iconv -t UTF-8 africa-coast-to-europe-ace.json -o africa-coast-to-europe-ace.json pour m'en assurer, ça change rien.

    J'ai essayé avec d'autres caractères Unicode : ça fonctionne avec « » » et des caractères Hangûl, mais pas avec le caractère « ⚧ »…

    J'en déduis que la fonction gsub() de jq foire avec certains caractères Unicode.

    J'ai rien trouvé de mieux que de remplacer l'aspostrophe problématique par l'apostrophe ASCII avec sed -i "s/’/'/" africa-coast-to-europe-ace.json avant son traitement par jq…

    Ce bug semble être corrigé dans la version 1.6 Debian GNU/Linux de jq.

    Sun Apr 5 19:18:31 2020 - permalink -
    - http://shaarli.guiguishow.info/?GQNU7A
Links per page: 20 50 100
page 1 / 1
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community