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,