{{tag>bash CSV CA}} = Bash CSV Petit script pour analyser les données d'un fichier CSV ''get_info_csv.sh'' #! /bin/bash CSV_FILE=$1 COUNT_FIELDS=$(head -1 "$CSV_FILE" | sed -e 's/[^;]//g' | wc | awk '{print $3}') GET_CSV_KEY() { local -i i i=$1 head -1 "$CSV_FILE" | cut -d';' -f"$i" } GET_COUNT_VALUE() { local -i i i=$1 sed -e 1d "$CSV_FILE" | cut -d';' -f"$i" | sort -u | wc -l } GET_UNIQUE_VALUE() { local -i i i=$1 sed -e 1d "$CSV_FILE" | cut -d';' -f"$i" | sort -u } for (( j=1; j<=COUNT_FIELDS; j++ )) do echo -n "[${j}_" COUNT=$(GET_COUNT_VALUE "$j") echo "$(GET_CSV_KEY "$j")]" if [[ COUNT -lt 200 ]] then GET_UNIQUE_VALUE "$j" else echo MUL fi echo "-----" done Utilisation source get_info_csv.sh plop.csv # Nom / entête du champ 1 GET_CSV_KEY 1 # Nombre de valeurs différente pour le champ 1 GET_COUNT_VALUE 1 # Récupère toutes les valeurs différentes pour un champ donné GET_UNIQUE_VALUE 4 # Nombre de champ / colonnes echo $COUNT_FIELDS == Autres === Type string vs int Dans certains cas il est particulièrement gênant de voir le ou les zéros ne pas s'afficher. Exemple : \\ ** Agent 7** \\ A la place d'**agent 007** Pour faire interpréter (dans LibreOffice / excel..) les données numériques comme des strings et non pas comme des integer l'astuce consiste à faire précéder le chiffre par une tabulation.