bash, fonction de filtre et d'extraction de données d'un csv en bash

2013-09-28

J’ai mis à disposition sur mon repository git un utilitaire csv-functions.sh pour filtrer et extraire des données d’un fichier csv en bash.

Voici un exemple d’utilisation :

csvexample() {
    (cat <<-EOF
lastname;firstname;birth;number_of_child
doe;john;1975;2
doe;foo;1990;1
doe;jane;1985;2
EOF
) > example.csv
    declare -A persons
    csvindexes persons example.csv
    for tuple in $(csvvalues example.csv | csvfilter persons "lastname=doe" "birth=1985" "number_of_child=2")
    do
	eval $(csvextract persons $tuple "vara=lastname" "varb=firstname" "varc=birth" "vard=number_of_child")
	echo "vara=$vara"
	echo "varb=$varb"
	echo "varc=$varc"
	echo "vard=$vard"
    done
    rm -f example.csv
}

avec son résultat :

$ bash csv-functions.sh 
vara=doe
varb=jane
varc=1985
vard=2