ubuntuusers.de

paste

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Hinweis:

Dieser Artikel beschreibt die alte Implementation des Programms. Ab Ubuntu 24.04 ist auch mit Paket rust-coreutils 🇬🇧 eine neue Implementierung in der Programmiersprache Rust für Ubuntu verfügbar, und ab Ubuntu Version 25.10 wird die Implementierung in Rust als Standard bevorzugt.

Die Implementierung in Rust strebt Funktionsgleichheit mit der alten Implementierung an. Es können aber kleine Abweichungen auftreten. Dies bedeutet, dass das hier Beschriebene von der am eigenen Rechner vorgefundenen Situation abweichen kann.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png Der Befehl paste gibt - ähnlich wie cat - die Eingabedateien weitgehend unverändert auf die Standardausgabe aus, hängt sie allerdings nicht einfach hintereinander, sondern kombiniert Zeilen der Eingaben spaltenweise.

Er kennt dabei zwei Betriebsarten:

  1. Alle Zeilen der Eingabedateien mit der selben Zeilennummer werden zu einer Zeile der Ausgabe kombiniert und mit je einem Zeichen getrennt.

  2. Alle Zeilen einer Ausgabedatei werden zu einer einzigen Zeile der Ausgabe kombiniert (wieder mit einem Trennzeichen), bevor die nächste Datei ausgegeben wird.

Das Standardtrennzeichen ist ein Tab.

Hinweis:

Das Programm seq gibt die Zahlen im angegebenen Bereich aus. Die spezielle Umleitung <(Befehl) liefert einen Dateinamen, über den die Ausgabe des Kommandos gelesen werden kann (spezielles, sehr praktisches Feature einiger Shells, z.B. Bash und Zsh).

Der Befehl cut ist gewissermaßen die Umkehroperation zu paste, da damit einzelne Spalten aus einer Eingabe heraus gelöst werden können.

Installation

 

  • Bis Ubuntu 25.04 ist das Programm im essentiellen Paket coreutils enthalten und deshalb auf jedem System installiert. Diese Variante beruht auf den altbekannten GNU Core Utilities.

  • Ab 25.10 ist das Paket coreutils 🇬🇧 jedoch ein Metapaket, welches alternativ durch gnu-coreutils 🇬🇧 oder rust-coreutils 🇬🇧 oder weitere befriedigt werden kann.

  • Bei 25.10 und 26.04 installiert das Paket coreutils-from-uutils 🇬🇧 beide vorstehend genannten Pakete und aktiviert die rust-coreutils als Vorgabe. Siehe Artikel rust-coreutils zur Umstellung auf die GNU-Utilities.

  • Ab 26.10 soll aber coreutils-from-uutils nur noch die rust-coreutils installieren. Wer dann die alten gnu-coreutils verwenden will, muss coreutils-from-gnu 🇬🇧 manuell installieren.

Bedienung

Wie die meisten Kommandos werden nach dem Befehl die Optionen und danach die Dateinamen der Eingaben angegeben

paste OPTIONEN DATEI1 DATEI2 ... 

Fehlen die Dateinamen, wird von der Standardeingabe (stdin) gelesen. Wird - als Dateiname benutzt, wird die Standardeingabe an dieser Stelle eingefügt (siehe Beispiele).

Optionen für paste
Verfügbare Optionen Bedeutung
-s oder --serial Schaltet in den zweiten Modus (s.o.).
-d LIST oder
--delimiters=LIST
Gibt die Trennzeichen an. Das erste Zeichen aus LIST wird zwischen die erste und zweite Spalte gesetzt, das zweite Zeichen zwischen die zweite und dritte usw. Werden mehr Trennzeichen benötigt als in LIST vorhanden, wird das letzte Zeichen in LIST für alle weiteren Zwischenräume verwendet. Gibt man eine leere Zeichenkette an, werden keine Trennzeichen eingefügt.
--help Ausgabe der Kommandozeilenhilfe.
--version Ausgabe der Programmversion.

Beispiele

Angabe von Trennzeichen

  • paste -d '+*' <(seq 1 5) <(seq 11 15) <(seq 21 25) 

    1+11*21
    2+12*22
    3+13*23
    4+14*24
    5+15*25
  • paste -d '+' <(seq 1 5) <(seq 11 15) <(seq 21 25) 

    1+11+21
    2+12+22
    3+13+23
    4+14+24
    5+15+25
  • paste -d '' <(seq 1 5) <(seq 11 15) <(seq 21 25) 

    11121
    21222
    31323
    41424
    51525

Bei Angabe einer leeren Zeichenkette werden keine Trennzeichen eingefügt.

Einfügen der Standardeingabe an einer bestimmten Position

  • seq 1 5 | paste - <(seq 11 15) <(seq 21 25) 

    1       11      21
    2       12      22
    3       13      23
    4       14      24
    5       15      25
  • seq 1 5 | paste <(seq 11 15) - <(seq 21 25) 

    11      1       21
    12      2       22
    13      3       23
    14      4       24
    15      5       25
  • seq 1 5 | paste <(seq 11 15) <(seq 21 25) - 

    11      21      1
    12      22      2
    13      23      3
    14      24      4
    15      25      5

Mehrfache Angabe desselben Dateinamens

  • seq 1 5 >|x
    cat x 

    1
    2
    3
    4
    5
  • paste x x 

    1       1
    2       2
    3       3
    4       4
    5       5
  • seq 1 5 | paste <(seq 11 15) - <(seq 21 25) - 

    11      1       21      2
    12      3       22      4
    13      5       23
    14              24
    15              25

Hinweis:

Aus der Standardeingabe kann nur ein Mal gelesen werden, deshalb verteilen sich die Zeilen.

Diese Revision wurde am 1. Oktober 2026 13:09 von Ruth-Wies erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung, Shell