Outils pour utilisateurs

Outils du site


tech:bash_csv

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.txt · Dernière modification : de Jean-Baptiste

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki