column — Eingaben in Spalten und Tabellen formatieren

Praxis-Guide zu column — Listen in Spalten setzen, ausgerichtete Tabellen aus getrennten Daten erzeugen und Befehlsausgaben im Terminal lesbar formatieren.

column formatiert Eingaben in saubere, ausgerichtete Spalten oder Tabellen – ideal, um unübersichtliche Befehlsausgaben oder getrennte Daten im Terminal lesbar zu machen. Im einfachsten Fall verteilst du eine Liste auf mehrere Spalten, die die Terminalbreite ausfüllen; mit -t erkennt column die Spaltenanzahl automatisch und richtet eine echte Tabelle aus. Über -s legst du das Eingabe-Trennzeichen fest, mit -o das Ausgabe-Trennzeichen, und mit -N, -H, -O oder -R benennst, versteckst, ordnest und richtest du einzelne Spalten aus. Die moderne util-linux-Version kann sogar JSON ausgeben. Beachte, dass column zwischen Distributionen und Versionen variiert – die hier gezeigten Optionen setzen ein aktuelles util-linux voraus.

Grundlagen

column <file> — Füllt Spalten vor Zeilen. Formatiert die Eingabe in mehrere Spalten, die die Terminalbreite ausfüllen.

column /etc/shells

<command> | column — Setzt Befehlsausgaben in Spalten, die die Terminalbreite ausfüllen.

echo -e 'one\ntwo\nthree\nfour\nfive\nsix' | column

column -x <file> — Füllt Zeilen vor Spalten (von links nach rechts, dann nächste Zeile).

ls /usr/bin | column -x

column -c <width> <file> — Legt die Ausgabebreite in Zeichen fest, statt die Terminalbreite zu nutzen.

column -c 40 names.txt

Tabellenmodus

column -t <file> — Erzeugt eine Tabelle: ermittelt die Spaltenanzahl und richtet sie aus.

column -t /etc/fstab

column -t -s '<sep>' <file> — Erzeugt eine Tabelle mit einem eigenen Eingabe-Trennzeichen.

column -t -s ',' data.csv

column -t -s ':' <file> — Erzeugt eine Tabelle aus doppelpunktgetrennten Daten.

column -t -s ':' /etc/passwd

column -t -s $'\t' <file> — Erzeugt eine Tabelle aus tabulatorgetrennten Daten.

column -t -s $'\t' data.tsv

column -t -o '<sep>' <file> — Legt das Ausgabe-Spaltentrennzeichen fest (Standard: zwei Leerzeichen).

column -t -s ',' -o ' | ' data.csv

Spaltenauswahl & Benennung

column -t -N <names> <file> — Setzt Spaltennamen als kommagetrennte Liste und fügt eine Kopfzeile hinzu.

column -t -N 'Name,Age,City' -s ',' data.csv

column -t -H <columns> <file> — Blendet angegebene Spalten aus (per Name oder 0-basiertem Index).

column -t -s ':' -N 'User,Pass,UID,GID,Info,Home,Shell' -H Pass /etc/passwd

column -t -O <columns> <file> — Ordnet die Spalten in der angegebenen Reihenfolge an.

column -t -s ',' -O 'City,Name,Age' data.csv

column -t -R <columns> <file> — Richtet angegebene Spalten rechtsbündig aus (per Name oder 0-basiertem Index).

column -t -s ',' -R 'Price,Amount' sales.csv

Erweiterte Tabellenoptionen

column -t -l <count> <file> — Begrenzt die Spaltenanzahl im Tabellenmodus.

column -t -l 3 data.txt

column -t -e <file> — Ignoriert leere Zeilen im Tabellenmodus nicht.

column -t -e data.txt

column -t -n <file> — Setzt den Namen der Tabelle (wirkt nur bei JSON-Ausgabe mit -J; im reinen Textmodus ohne sichtbaren Effekt).

column -t -n -N 'PID,User,Command' -s ',' procs.csv

column -t -W <columns> <file> — Bricht Text in angegebenen Spalten um, wenn er die Terminalbreite überschreitet.

column -t -s ',' -W 'Description' items.csv

JSON-Ausgabe

column -t -J <file> — Gibt die Tabelle als JSON-Array von Objekten aus (benötigt -N bzw. eine Kopfzeile).

column -t -s ',' -J -N 'Name,Age,City' data.csv

column -t -J -n <name> <file> — Legt den Namen des JSON-Arrays in der Ausgabe fest.

column -t -s ',' -J -n 'users' -N 'Name,Email' users.csv

Pipelines

<command> | column -t — Richtet leerraumgetrennte Befehlsausgaben zu einer sauberen Tabelle aus.

mount | column -t

<command> | column -t -s '<sep>' — Erzeugt eine ausgerichtete Tabelle aus getrennter Befehlsausgabe.

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT | column -t

printf '%s\n' <items> | column — Formatiert eine Liste von Elementen zur Anzeige in Spalten.

printf '%s\n' red green blue yellow orange purple | column

<command> | column -t -s $'\t' — Formatiert tabulatorgetrennte Ausgaben zu einer ausgerichteten Tabelle.

docker stats --no-stream --format 'table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}' | column -t -s $'\t'

Typische Anwendungsfälle

cat /etc/passwd | column -t -s ':' — Zeigt /etc/passwd als lesbare, ausgerichtete Tabelle an.

cat /etc/passwd | column -t -s ':'

(head -1 <file> && tail -n +2 <file> | sort) | column -t -s ',' — Sortiert eine CSV-Datei (Kopfzeile bleibt oben) und zeigt sie als ausgerichtete Tabelle an.

(head -1 data.csv && tail -n +2 data.csv | sort -t',' -k2) | column -t -s ','

printf '%-15s %s\n' 'Key' 'Value' && printf '%-15s %s\n' <pairs> — Manuelle Spaltenformatierung mit printf, wenn column nicht flexibel genug ist.

printf '%-15s %s\n' 'Host' 'example.com' 'Port' '443' 'Protocol' 'HTTPS'

awk -F: '{print $1, $3, $7}' /etc/passwd | column -t — Wählt mit awk bestimmte Felder aus und formatiert sie als ausgerichtete Tabelle.

awk -F: '{print $1, $3, $7}' /etc/passwd | column -t

column -t -s ',' -o ' | ' <file> — Wandelt CSV in eine pipe-getrennte Tabelle um (Markdown-ähnlich).

column -t -s ',' -o ' | ' data.csv

paste <file1> <file2> | column -t -s $'\t' — Führt zwei Dateien nebeneinander zusammen und richtet sie als Tabelle aus.

paste names.txt scores.txt | column -t -s $'\t'

Fazit

column verwandelt unleserliche Datenströme mit einem einzigen -t in saubere Tabellen – unschlagbar, um Befehlsausgaben oder CSV-Dateien im Terminal überfliegbar zu machen. Bedenke aber zwei Stolperfallen: Erstens ist column nicht überall gleich – die mächtigen Optionen (-N, -O, -H, -J) stammen aus util-linux und fehlen auf BSD/macOS, wo column deutlich schlanker ist. Zweitens fasst column mit -s aufeinanderfolgende Trennzeichen standardmäßig nicht zusammen, sodass leere Felder als eigene Spalten erscheinen können. Für die reine Anzeige ist column perfekt; zum Weiterverarbeiten von Daten greifst du besser zu cut, awk oder einem CSV-Parser.

Verwandte Kommandos

  • cut – Felder, Zeichen oder Byte-Bereiche aus Zeilen herausschneiden
  • paste – Zeilen mehrerer Dateien spaltenweise zusammenführen
  • sort – Zeilen sortieren, oft als Vorstufe vor der Tabellenanzeige