Linux / Commande column : aligner du texte en tableau lisible
column -t aligne les champs d'un texte pour produire un tableau lisible dans le terminal. Avec la version util-linux, -s choisit les séparateurs d'entrée et -o celui de sortie. Cette mise en forme facilite la lecture ; elle ne valide pas à elle seule le sens ou la structure des données.
Column peut lire un fichier ou une entrée transmise par tube. Les options disponibles, les longues valeurs, la largeur d'affichage et les couleurs dépendent de l'implémentation et de la version. Les exemples suivants concernent column d'util-linux ; vérifiez man column et column --help sur votre système.
Préparer des données et aligner les champs
column [options] [fichiers…]
Dans Bash, créez un nouveau répertoire et un petit tableau séparé par des blancs :
column_lab=$(mktemp -d "$HOME/column-lab.XXXXXX")
cd -- "$column_lab"
printf 'NAME VERSION\nalpha 1.2\nlong-package 3.0\n' > packages.txt
column -t packages.txt
La sortie ressemble à ceci ; les espaces exacts peuvent varier selon la version :
NAME VERSION
alpha 1.2
long-package 3.0
La première colonne s'élargit pour contenir long-package. Les lignes ne sont pas triées : column conserve ici l'ordre d'entrée et ajoute l'espacement nécessaire à la présentation. Utilisez sort pour changer l'ordre des lignes avant la mise en forme si c'est votre objectif.
Le fichier packages.txt reste intact. Notez le chemin du répertoire d'exercice pour retrouver les données ; vous pourrez le quitter avec cd "$HOME".
Mettre en forme le résultat d'une commande
Il n'est pas nécessaire de créer un fichier lorsque les données arrivent déjà sur l'entrée standard :
printf 'name score\nkim 90\nlee 85\n' | column -t
name score
kim 90
lee 85
Avec des noms de longueurs différentes, la même commande calcule la largeur de la colonne :
printf 'NAME AGE\nAna 7\nBenjamin 12\n' | column -t
NAME AGE
Ana 7
Benjamin 12
Les nombres restent des valeurs affichées. Leur apparence ne prouve pas qu'ils ont été validés ou comparés numériquement. Un tableau aligné n'établit pas non plus qu'une ligne possède le nombre de champs attendu.
Distinguer séparateurs d'entrée et de sortie
Préparez une entrée dont les champs sont séparés par des deux-points :
printf 'NAME:ROLE\nAna:reader\nBenjamin:writer\n' > roles.txt
column -s ':' -t roles.txt
NAME ROLE
Ana reader
Benjamin writer
-s ':' indique comment découper les champs d'entrée ; -t demande un tableau. Sans le bon séparateur, les deux-points risquent de rester à l'intérieur d'un champ au lieu de définir les colonnes voulues.
Pour rendre la séparation de sortie visible, utilisez une chaîne avec -o :
column -s ':' -t -o ' | ' roles.txt
NAME | ROLE
Ana | reader
Benjamin | writer
Les colonnes restent alignées avec des espaces, et la chaîne choisie est insérée entre elles. Il ne s'agit pas simplement de remplacer chaque deux-points de la source par une barre verticale.
Le fichier local Linux /etc/passwd est un autre exemple d'entrée séparée par deux-points :
column -s ':' -t /etc/passwd
La sortie dépend des comptes et des champs présents sur la machine ; aucune liste précise de comptes n'est attendue. Cet affichage peut être large. Il lit uniquement le fichier local, pas tous les comptes qui pourraient être fournis par un annuaire distant.
Conserver une sortie lisible sans la confondre avec les données
column -t packages.txt > packages-display.txt
cat packages-display.txt
cat packages.txt
Le premier fichier affiché contient la présentation alignée ; le second conserve les blancs d'origine. Choisissez une nouvelle destination, car la redirection peut écraser un fichier déjà présent. Ne redirigez pas vers le fichier lu par column lui-même.
Pour un autre programme, conservez de préférence les données initiales dans un format dont les séparateurs et les règles sont définis. Reconstituer des champs en découpant les espaces d'un affichage peut échouer si une valeur contient elle-même des espaces ou si la présentation change.
De même, column -s ',' -t n'est pas un analyseur CSV complet : il ne suffit pas pour des champs entre guillemets contenant des virgules ou des retours à la ligne. Des versions util-linux proposent un mode JSON explicite, mais ce mode doit être configuré comme tel ; une sortie alignée avec des espaces ne devient pas du JSON et ne remplace pas une validation d'entrée.
Vérifier la version et choisir les options
| Option | Rôle |
|---|---|
-t |
Calculer les colonnes d'entrée et créer un tableau. |
-s séparateurs |
Choisir les caractères qui séparent les champs d'entrée. |
-o texte |
Choisir le séparateur de sortie du mode tableau. |
-x |
Dans le mode de remplissage en colonnes, remplir les lignes avant les colonnes. |
-x concerne le placement d'une liste en colonnes ; ce n'est pas une commande qui transpose les lignes et les colonnes d'un tableau -t. Choisissez le mode correspondant à votre besoin, puis contrôlez la sortie dans le terminal visé.
Si la commande est absente, recherchez le paquet qui fournit column dans la documentation ou le gestionnaire de paquets de votre distribution. Le nom du paquet n'est pas identique partout. Une erreur d'option peut aussi indiquer une autre implémentation ou une version ancienne : vérifiez l'aide installée avant de reprendre des options de largeur, de retour à la ligne ou de couleur d'un manuel plus récent.
Le manuel de column d'util-linux décrit les modes, les séparateurs et les options de présentation actuelles.




