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.
paste namen.txt alter.txtAnna 29
Bernd 34
Clara 41paste 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
| Option | Bedeutung |
|---|---|
-d DELIM | Trenner-Liste — bei mehreren Zeichen rotieren sie zyklisch |
-s | Serial-Modus — jede Datei wird komplett in eine einzige Zeile umgewandelt |
-z | NUL-Byte (\0) statt Newline als Zeilentrenner verwenden |
--help | Hilfetext anzeigen |
--version | Versionsinformation 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.
paste a.txt b.txt c.txt1 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.
paste -d ',' namen.txt alter.txt orte.txtAnna,29,Berlin
Bernd,34,Hamburg
Clara,41,MünchenWerden mehrere Trennzeichen angegeben, rotieren sie zyklisch zwischen den Spalten. Bei vier Eingabedateien und -d ',;' sieht das so aus:
paste -d ',;' a.txt b.txt c.txt d.txt1,2;3,4Zwischen 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.
paste -s -d, zutaten.txtMehl,Zucker,Eier,Butter,SalzBei 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:
paste <(ls /etc | head -3) <(ls /var | head -3)adduser.conf backups
alternatives cache
apache2 libVerzeichnislisting zu CSV — einzeilig, ohne Schleife:
ls *.log | paste -sd,access.log,error.log,system.logCSV-Spalten neu zusammensetzen — cut extrahiert einzelne Felder, paste fügt sie in neuer Reihenfolge wieder zusammen:
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
- paste(1) – Linux manual page (man7.org) — offizielle Dokumentation aller Optionen
- GNU Coreutils Manual: paste invocation — ausführliche Beschreibung im GNU-Handbuch
- POSIX paste specification — formale POSIX-Definition
Verwandte Artikel
- cut – Spalten extrahieren — das spiegelbildliche Werkzeug zu paste
- join – Dateien anhand eines Schlüssels mergen — relationaler Merge wie SQL JOIN
- sort – Zeilen sortieren — Voraussetzung für viele Pipeline-Schritte
- awk – Textverarbeitung mit Skripten — flexibler bei komplexen Kombinationen
- tr – Zeichen ersetzen oder löschen — wenn Newlines in Trenner umgewandelt werden sollen