paste — Zeilen spaltenweise zusammenführen

Praxis-Guide zu paste: Zeilen aus mehreren Dateien spaltenweise nebeneinander zusammenführen, eigene Trennzeichen nutzen und CSV-Daten bauen.

paste fügt Zeilen aus mehreren Dateien spaltenweise nebeneinander zusammen – standardmäßig getrennt durch einen Tabulator, auf Wunsch durch ein beliebiges Trennzeichen (-d). Damit baust du im Handumdrehen Tabellen oder CSV-Daten aus einzelnen Spaltendateien. Mit -s drehst du den Spieß um und fügst stattdessen alle Zeilen einer Datei zu einer einzigen Zeile zusammen. Über den Platzhalter - liest paste auch aus der Standardeingabe, sodass sich ein flacher Datenstrom in mehrere Spalten umbrechen lässt. Dieser Guide zeigt dir die wichtigsten Varianten und ihre Pipeline-Tricks.

Grundlagen

paste <file1> <file2> — Zeilen nebeneinander zusammenführen, durch Tab getrennt.

paste names.txt scores.txt

paste -d '<delim>' <file1> <file2> — Ein eigenes Trennzeichen statt Tab verwenden.

paste -d ',' names.txt scores.txt

paste -d '\n' <file1> <file2> — Zeilen aus zwei Dateien verschränken (abwechselnd).

paste -d '\n' questions.txt answers.txt

paste -s <file> — Alle Zeilen einer Datei zu einer einzigen Zeile zusammenfügen (serieller Modus).

paste -s names.txt

paste -s -d ',' <file> — Alle Zeilen mit Komma zusammenfügen (CSV-ähnliche Ausgabe erzeugen).

paste -s -d ',' names.txt

Standardeingabe verwenden

cat <file> | paste - - — Die Eingabe in 2 Spalten anordnen.

seq 6 | paste - -

cat <file> | paste - - - — Die Eingabe in 3 Spalten anordnen.

seq 9 | paste - - -

cat <file> | paste -d ',' - - — In 2 kommagetrennte Spalten anordnen.

seq 6 | paste -d ',' - -

paste <file> - — Eine Datei mit der Standardeingabe nebeneinander zusammenführen.

seq 3 | paste names.txt -

Mehrere Trennzeichen

paste -d ',;:' <file1> <file2> <file3> <file4> — Mehrere Trennzeichen für jeden Spaltentrenner reihum verwenden.

paste -d ',;:' f1.txt f2.txt f3.txt f4.txt

paste -d ',\n' - - — Abwechselnd Komma und Zeilenumbruch als Trennzeichen.

seq 6 | paste -d ',\n' - -

paste -d '\t|' <file1> <file2> <file3> — Tab und dann Pipe als abwechselnde Trennzeichen verwenden.

paste -d '\t|' col1.txt col2.txt col3.txt

Typische Muster

ls | paste -s -d ' ' — Dateien in einer einzigen Zeile auflisten, durch Leerzeichen getrennt.

ls *.txt | paste -s -d ' '

cut -f1 data.tsv | paste -s -d '+' — Aus einer Zahlenspalte einen Summenausdruck erzeugen.

cut -f1 data.tsv | paste -s -d '+' | bc

paste -d ',' <(cmd1) <(cmd2) — Die Ausgabe zweier Befehle nebeneinander kombinieren.

paste -d ',' <(cut -f1 data.tsv) <(cut -f3 data.tsv)

seq <n> | paste -s -d ',' — Eine kommagetrennte Zahlenfolge erzeugen.

seq 10 | paste -s -d ','

awk '{print $1}' file | paste -s -d '|' — Aus einer Spalte eine pipe-getrennte Liste erzeugen.

awk '{print $1}' users.txt | paste -s -d '|'

Fazit

paste ist das Gegenstück zu cut: Während cut Spalten heraustrennt, fügt paste sie wieder zusammen. Achte darauf, dass paste rein zeilenpositionsbasiert arbeitet – es verbindet die jeweils n-te Zeile jeder Datei ohne jeden Abgleich von Schlüsseln; für inhaltlich verknüpfte Spalten brauchst du stattdessen join. Bei -d gibst du mehrere Trennzeichen als Liste an, die reihum für die Spaltenübergänge durchlaufen wird. Steuerzeichen wie Tab oder Zeilenumbruch schreibst du dabei als '\t' bzw. '\n' in einfachen Anführungszeichen, damit die Shell sie unverändert an paste weiterreicht.

Verwandte Kommandos

  • cut – Spalten und Felder aus Zeilen ausschneiden
  • column – Eingaben in saubere Spalten formatieren
  • tr – einzelne Zeichen ersetzen oder löschen