tech:bash_csv
Ceci est une ancienne révision du document !
Table des matières
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.
tech/bash_csv.1742825205.txt.gz · Dernière modification : de 127.0.0.1
