Voici un petit script permettant de présenter sous forme d’arbre un fichier CSV sous la forme : enfant;parent


#!/bin/bash

currentlevel=0
root='Vertébrés'
echo $root

# Affiche un arbre à partir du noeud passé en argument
function subtree
{
       while IFS=";" read enfant parent
       do
               #echo "test $enfant ; $parent"
               if [ "$parent" == "$1" ] # Cherche et affiche les enfants du noeud actuel
               then
                       for (( i=0; i<$currentlevel; i++ ))
                       do
                               echo -e -n "|      "
                       done
                       echo -e "└------$enfant"
                       currentlevel=$((currentlevel+1))
                       subtree $enfant
                       currentlevel=$((currentlevel-1))
               fi
       done < animaux.csv

}

Exemple de fichier en entrée :


Poissons;Vertébrés
Batraciens;Vertébrés
Reptiles;Vertébrés
Mammifères;Vertébrés
Oiseaux;Vertébrés
Crapaud;Batraciens
Grenouille;Batraciens
Reptiles;Lézare
Reptiles;Tortue
Reptiles;Serpent
Carnivores;Mammifères
Herbivores;Mammifères
Chat;Carnivores
Chien;Carnivores

Et le résultat :


ruliane@testsrv01:~$ ./tree.sh
Vertébrés
└------Poissons
└------Batraciens
|      └------Crapaud
|      └------Grenouille
└------Reptiles
└------Mammifères
|      └------Carnivores
|      |      └------Chat
|      |      └------Chien
|      └------Herbivores
└------Oiseaux
ruliane@testsrv01:~$