Développement

join multi-fichiers CSV

Récemment, j'ai dû assembler le contenu de plusieurs fichiers CSV en effectuant une jointure sur une clé unique pour chaque ligne. Contexte Les fichiers se composent de 2 colonnes. La première est une clé et la seconde une valeur quelconque. Les clés ne sont pas toutes présentes dans chaque fichier. Les lignes de ces fichiers peuvent être triées par ordre alphabétique sur la clé. Pour information, le séparateur de champ utilisé est la virgule. De plus, les fichier ne contiennent…
Lire d'avantage
Développement

MSYS – éviter l’évaluation des arguments comme des chemins

Si vous êtes sous MS Windows et que vous faites du Bash ou autres scripts en ligne de commandes, vous utilisez sûrement MSYS. Dans ce cas, n'avez-vous pas rencontré quelques difficultés avec des paramètres commençant par le caractère "/" ? Par exemple, avec Docker : $ docker run -w /tmp ubuntu ls -la docker: Error response from daemon: The working directory 'C:/Users/pnom/AppData/Local/Temp' is invalid. It needs to be an absolute See 'C:\Program Files\Docker Toolbox\ run --help'. Celà vient du fait…
Lire d'avantage
Développement

jq – manipuler du JSON en shell

JSON par-ci, JSON par-là. Le format de données JSON a conquis le monde du développement. Il a l'avantage d'être lisible par les humains et il est supporté par la plupart des langages des programmation (via un composant externe ou non). Cela en fait un format d'échange parfait ! Parfait ? Êtes-vous vraiment sûr ? Avez-vous déjà essayé de manipuler du JSON dans un shell ? En cherchant un peu, il est possible de trouver deux projets : jq : un…
Lire d'avantage
Développement

Bash – set -xe pour un développement plus rapide

Lorsque l'on écrit des scripts shell de provision, leur validation peut se révéler très longue. Et l'analyse de l'erreur initiale n'est pas toujours facile. Pourtant, le bash propose la commande set avec 2 options qui peuvent grandement augmenter votre productivité : -e : sort du script dès qu'une erreur est rencontrée (retour différent de 0) -x : affiche la commande exécutée avec ses arguments Ainsi donc, en phase de développement, vous pouvez commencer vos scripts ainsi : #! /bin/bash set…
Lire d'avantage