Lorsque vous travaillez avec des fichiers CSV en ligne de commande, leur affichage brut avec cat ou less est souvent peu lisible. Les colonnes ne sont pas alignées et il devient difficile de comprendre la structure des données. La commande column permet de formater l'affichage de données tabulaires sous forme de colonnes alignées, directement dans le terminal.
Présentation de column
column est un utilitaire Unix qui formate des lignes de texte en colonnes alignées. Bien qu'il ne soit pas spécifiquement conçu pour les fichiers CSV, il s'avère très pratique pour afficher ce type de données de manière structurée.
Avantages de column :
- Outil standard présent sur la plupart des distributions Linux
- Aucune installation nécessaire
- Très léger et rapide
- Simple d'utilisation
- Fonctionne avec différents types de séparateurs (virgule, tabulation, point-virgule, etc...)
Si vous ne l'avez pas déjà dans votre distribution, vous pouvez l'installer :
apt-get install bsdmainutils
Syntaxe de base
La syntaxe générale pour afficher un fichier CSV est la suivante :
column -t -s ',' fichier.csv
-t: active le mode tableau (table mode), qui aligne automatiquement les colonnes-s ',': définit le séparateur de colonnes (ici la virgule)
Par exemple, si vous avez un fichier utilisateurs.csv contenant :
nom,prenom,age,ville
Micoton,Milène,28,Paris
Bombeur,Jean,35,Lyon
Terrieur,Alain,42,Marseille
La commande column -t -s ',' utilisateurs.csv affichera :
nom prenom age ville
Micoton Milène 28 Paris
Bombeur Jean 35 Lyon
Terrieur Alain 42 Marseille
Options principales
Définir le séparateur
L'option -s accepte n'importe quel caractère comme séparateur. Pour un fichier TSV (séparé par des tabulations) :
column -t -s $'\t' fichier.tsv
Pour un fichier séparé par des points-virgules :
column -t -s ';' fichier.csv
Définir le séparateur de sortie
Par défaut, column utilise deux espaces pour séparer les colonnes en sortie. Vous pouvez personnaliser ce comportement avec l'option -o :
column -t -s ',' -o ' | ' fichier.csv
Sortie :
nom | prenom | age | ville
Micoton | Milène | 28 | Paris
Bombeur | Jean | 35 | Lyon
Terrieur | Alain | 42 | Marseille
Gérer les lignes vides
L'option -e permet d'ignorer les lignes vides du fichier :
column -t -s ',' -e fichier.csv
Combinaisons avec d'autres commandes
Utiliser less pour la pagination
Pour les fichiers CSV volumineux, vous pouvez combiner column avec less pour naviguer facilement :
column -t -s ',' fichier.csv | less -S
L'option -S de less évite le retour à la ligne automatique, ce qui améliore la lisibilité des tableaux larges. Vous pouvez ensuite utiliser les flèches gauche/droite pour naviguer horizontalement.
Filtrer avec grep
Vous pouvez filtrer les lignes avant de les formater :
grep "Paris" fichier.csv | column -t -s ','
Ou pour afficher l'en-tête avec les résultats filtrés :
(head -n 1 fichier.csv && grep "Paris" fichier.csv) | column -t -s ','
Trier les données
Combinez column avec sort pour afficher des données triées :
(head -n 1 fichier.csv && tail -n +2 fichier.csv | sort) | column -t -s ','
Cette commande conserve l'en-tête en première ligne et trie le reste du fichier.
Compter les lignes de données
Pour compter le nombre de lignes d'un fichier CSV en excluant l'en-tête, vous pouvez utiliser tail combiné avec wc -l :
tail -n +2 fichier.csv | wc -l
Afficher seulement certaines colonnes
Si vous souhaitez n'afficher que certaines colonnes, lla commande cut permet de sélectionner uniquement celles qui vous intéressent avant de les formater avec column.
cut -d, -f2,4,5 fichier.csv | column -t -s,
-d,: définit la virgule comme délimiteur de champs-f2,4,5: sélectionne les colonnes 2, 4 et 5
Vous pouvez également utiliser des plages de colonnes. Par exemple, pour afficher les colonnes 1 à 3 :
cut -d, -f1-3 fichier.csv | column -t -s,
Ou pour afficher toutes les colonnes à partir de la 3ème :
cut -d, -f3- fichier.csv | column -t -s,








