Das paste Kommando ist das spiegelbildliche Gegenstück zu cut: Während cut Spalten aus einer Datei herausschneidet, fügt paste Zeilen aus mehreren Dateien spaltenweise zusammen. Zeile für Zeile entstehen so neue Datensätze, deren Felder aus unterschiedlichen Quellen stammen — standardmäßig durch Tabulator getrennt, optional mit beliebigen anderen Delimitern.

Was paste macht

paste liest mehrere Dateien parallel und kombiniert ihre Zeilen horizontal zu neuen Zeilen. Die erste Zeile aus File A wird mit der ersten Zeile aus File B verbunden, die zweite mit der zweiten und so weiter. Das Ergebnis ist eine neue Tabelle, in der jede Eingabedatei eine Spalte stellt.

Bash Grundprinzip
paste namen.txt alter.txt
Output
Anna	29
Bernd	34
Clara	41

paste ist damit das Werkzeug, wenn du voneinander getrennte Daten wieder zu einer Tabelle zusammenführen möchtest — etwa wenn cut zuvor einzelne Spalten extrahiert hat und du diese in anderer Reihenfolge oder mit anderen Daten neu kombinieren willst.

Optionen

OptionBedeutung
-d DELIMTrenner-Liste — bei mehreren Zeichen rotieren sie zyklisch
-sSerial-Modus — jede Datei wird komplett in eine einzige Zeile umgewandelt
-zNUL-Byte (\0) statt Newline als Zeilentrenner verwenden
--helpHilfetext anzeigen
--versionVersionsinformation ausgeben

Standardmäßig verwendet paste den Tabulator als Trenner und Newline als Zeilenende — beides lässt sich mit -d bzw. -z überschreiben.

Mehrere Dateien kombinieren

Werden mehrere Dateien übergeben, fügt paste sie alle nebeneinander an. Mit drei Dateien entsteht eine dreispaltige Tabelle.

Bash Drei Dateien
paste a.txt b.txt c.txt
Output
1	rot	klein
2	grün	mittel
3	blau	groß

Die Spalten werden mit Tabulatoren getrennt. Das ist praktisch, weil viele andere Werkzeuge (cut, awk, sort -t$'\t') den Tab als Standardtrenner erkennen — die Ausgabe lässt sich sofort weiterverarbeiten.

Custom-Delimiter

Mit -d lässt sich der Trenner frei wählen. Ein Komma erzeugt direkt CSV-konforme Ausgabe, ein Leerzeichen flacht zu einer einfachen Wortliste ab.

Bash CSV erzeugen
paste -d ',' namen.txt alter.txt orte.txt
Output
Anna,29,Berlin
Bernd,34,Hamburg
Clara,41,München

Werden mehrere Trennzeichen angegeben, rotieren sie zyklisch zwischen den Spalten. Bei vier Eingabedateien und -d ',;' sieht das so aus:

Bash Rotierende Delimiter
paste -d ',;' a.txt b.txt c.txt d.txt
Output
1,2;3,4

Zwischen Spalte 1 und 2 steht das Komma, zwischen 2 und 3 das Semikolon, zwischen 3 und 4 wieder das Komma — die Liste wird zyklisch durchlaufen.

Serial-Modus mit -s

Im Serial-Modus arbeitet paste jede Datei für sich ab und fügt alle ihre Zeilen zu einer einzigen Zeile zusammen. Aus N Zeilen wird eine — getrennt durch den Delimiter.

Bash Liste zu Komma-Liste
paste -s -d, zutaten.txt
Output
Mehl,Zucker,Eier,Butter,Salz

Bei mehreren Dateien produziert -s pro Datei eine Zeile in der Ausgabe — nicht parallel, sondern seriell. Das ist die schnellste Methode, eine Liste in eine kommagetrennte Inline-Form zu bringen, ohne tr oder awk bemühen zu müssen.

Praxis

Output von zwei Befehlen seitwärts — mit Process Substitution lässt sich paste sogar für unterschiedliche Kommandos verwenden, ohne Zwischendateien zu schreiben:

Bash Prozesse kombinieren
paste <(ls /etc | head -3) <(ls /var | head -3)
Output
adduser.conf	backups
alternatives	cache
apache2	lib

Verzeichnislisting zu CSV — einzeilig, ohne Schleife:

Bash ls als CSV
ls *.log | paste -sd,
Output
access.log,error.log,system.log

CSV-Spalten neu zusammensetzencut extrahiert einzelne Felder, paste fügt sie in neuer Reihenfolge wieder zusammen:

Bash Spalten umordnen
paste -d, <(cut -d, -f3 daten.csv) <(cut -d, -f1 daten.csv)

Besonderheiten

Unterschiedlich lange Dateien — leere Zellen entstehen automatisch

Wenn die Eingabedateien nicht gleich viele Zeilen haben, ergänzt paste für die kürzere Datei einfach leere Felder. Die Ausgabe enthält dann den Delimiter ohne Inhalt davor oder danach. Ein File mit drei Zeilen, kombiniert mit einem File mit fünf Zeilen, ergibt fünf Ausgabezeilen — die letzten beiden haben in der ersten Spalte einen leeren Wert.

Die Delimiter-Liste rotiert nur in einem Zyklus

Mit -d ',;|' werden die drei Zeichen reihum verwendet: erster Trenner Komma, zweiter Semikolon, dritter Pipe, vierter wieder Komma. Das gilt sowohl beim normalen Modus (zwischen Spalten verschiedener Files) als auch beim Serial-Modus (zwischen Zeilen desselben Files). Wer das nicht weiß, wundert sich über scheinbar zufällige Trennzeichen.

Konkatenation mit `-d ''`

Ein leerer Delimiter sorgt dafür, dass die Spalten ohne Trennzeichen direkt aneinandergehängt werden. Damit lässt sich paste als Werkzeug zum spaltenweisen Aneinanderkleben verwenden — etwa um Präfixe und Werte zu kombinieren oder Strings ohne Whitespace zu mergen.

Kein eingebautes Header-Skip

paste kennt keine Option, um die erste Zeile (etwa Spaltenüberschriften einer CSV) zu überspringen. Wer Headers ignorieren will, muss vorher mit tail -n +2 oder sed 1d arbeiten und das Ergebnis per Process Substitution einspeisen.

Weiterführende Ressourcen

Externe Quellen

/ Weiter

Zurück zu Textverarbeitung

Zur Übersicht