Linux / Befehl paste: Entsprechende Zeilen nebeneinander verbinden

paste nimmt die entsprechenden Zeilen aus mehreren Dateien und fügt sie nebeneinander zu einer einzigen Zeile zusammen. Das Standard-Trennzeichen ist ein Tabulator, und es kann auch verwendet werden, um vertikal gestapelte Werte in eine einzige Zeile zu verwandeln.

Im Gegensatz zu cat, das Dateiinhalte vertikal zusammenführt, fügt paste die ersten Zeilen zusammen, die zweiten Zeilen zusammen und so weiter. Wenn die Dateilängen unterschiedlich sind, wird die kürzere mit leeren Feldern aufgefüllt.

Grundlegende Syntax

paste [option] [file...]

Installierte Implementierungen und Optionen können je nach Distribution variieren. Überprüfen Sie die Beschreibung auf dem aktuellen System mit man paste.

Beispiele

Zwei Dateien nach Spalten kombinieren

Fügen Sie die entsprechende Zeile aus der zweiten Datei neben jede Zeile der ersten Datei an.

paste names.txt scores.txt

Geben Sie einen Trenner an

Verwenden Sie einen Doppelpunkt anstelle eines Tabs, um Werte aus den beiden Dateien zu trennen.

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

Eine Datei in eine Zeile ändern

-s liest die Datei kontinuierlich und fügt die Zeilen horizontal zusammen.

paste -s -d ',' names.txt

Zeilen von zwei Eingaben kombinieren

Dieser Befehl platziert die ersten Zeilen von zwei Dateien nebeneinander, die zweiten Zeilen nebeneinander und so weiter. Das untenstehende Beispiel erstellt keine tatsächlichen Dateien, da es Prozesssubstitution in Bash verwendet.

paste -d, <(printf 'Ana\nBob\n') <(printf '7\n12\n')

Beispielausgabe:

Ana,7
Bob,12

Im Gegensatz zu join, das Zeilen anhand eines gemeinsamen Schlüssels abgleicht, richtet paste die Zeilen nach Position aus. Wenn eine Eingabe weniger Zeilen hat, werden die fehlenden Felder mit leeren Werten gefüllt. In Umgebungen, die keine Prozesssubstitution unterstützen, wie zum Beispiel reine POSIX-Shells, bereiten Sie die beiden Eingaben als temporäre Dateien vor.

Hauptoptionen und Format

Optionen/Format Beschreibung
-d list Legt das Trennzeichen fest, das an der Verbindungsposition verwendet wird.
-s Fasst Zeilen aus jeder Datei nacheinander zu einer Zeile zusammen.
- Verwendet die Standardeingabe anstelle von Dateiargumenten.

Vorsichtsmaßnahmen bei der Verwendung

Überprüfen Sie zuerst, ob die entsprechenden Zeilen zweier Dateien dasselbe Objekt betreffen. Wenn die Reihenfolge der Zeilen unterschiedlich ist, können falsche Werte nebeneinander stehen, ohne dass ein Fehler entsteht. Wenn Sie Zeilen mit einem gemeinsamen Schlüssel verbinden müssen, überprüfen Sie die Sortierbedingung und verwenden Sie dann join.

Häufig gestellte Fragen

Was ist der Unterschied zwischen paste und join?

paste fügt Zeilen entsprechend ihrer Zeilennummern an, während join Zeilen verbindet, die denselben Wert in einem gemeinsamen Feld haben.

Offizielle Dokumentation

Sie können das genaue Verhalten der Optionen und die Unterschiede zwischen den Implementierungen in der offiziellen Dokumentation zu paste nachsehen.