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' | columncolumn -x <file> — Füllt Zeilen vor Spalten (von links nach rechts, dann nächste Zeile).
ls /usr/bin | column -xcolumn -c <width> <file> — Legt die Ausgabebreite in Zeichen fest, statt die Terminalbreite zu nutzen.
column -c 40 names.txtTabellenmodus
column -t <file> — Erzeugt eine Tabelle: ermittelt die Spaltenanzahl und richtet sie aus.
column -t /etc/fstabcolumn -t -s '<sep>' <file> — Erzeugt eine Tabelle mit einem eigenen Eingabe-Trennzeichen.
column -t -s ',' data.csvcolumn -t -s ':' <file> — Erzeugt eine Tabelle aus doppelpunktgetrennten Daten.
column -t -s ':' /etc/passwdcolumn -t -s $'\t' <file> — Erzeugt eine Tabelle aus tabulatorgetrennten Daten.
column -t -s $'\t' data.tsvcolumn -t -o '<sep>' <file> — Legt das Ausgabe-Spaltentrennzeichen fest (Standard: zwei Leerzeichen).
column -t -s ',' -o ' | ' data.csvSpaltenauswahl & 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.csvcolumn -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/passwdcolumn -t -O <columns> <file> — Ordnet die Spalten in der angegebenen Reihenfolge an.
column -t -s ',' -O 'City,Name,Age' data.csvcolumn -t -R <columns> <file> — Richtet angegebene Spalten rechtsbündig aus (per Name oder 0-basiertem Index).
column -t -s ',' -R 'Price,Amount' sales.csvErweiterte Tabellenoptionen
column -t -l <count> <file> — Begrenzt die Spaltenanzahl im Tabellenmodus.
column -t -l 3 data.txtcolumn -t -e <file> — Ignoriert leere Zeilen im Tabellenmodus nicht.
column -t -e data.txtcolumn -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.csvcolumn -t -W <columns> <file> — Bricht Text in angegebenen Spalten um, wenn er die Terminalbreite überschreitet.
column -t -s ',' -W 'Description' items.csvJSON-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.csvcolumn -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.csvPipelines
<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 -tprintf '%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 -tcolumn -t -s ',' -o ' | ' <file> — Wandelt CSV in eine pipe-getrennte Tabelle um (Markdown-ähnlich).
column -t -s ',' -o ' | ' data.csvpaste <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.
Weiterführende Links
- column(1) man page (util-linux) – offizielle Referenz aller Optionen (englisch)
- ubuntuusers-Wiki: util-linux – deutschsprachige Übersicht zum util-linux-Paket, das column enthält