Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
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:
Alle Zeilen der Eingabedateien mit der selben Zeilennummer werden zu einer Zeile der Ausgabe kombiniert und mit je einem Zeichen getrennt.
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.
Beispiel zu 1:
paste <(seq 1 5) <(seq 11 15) <(seq 21 25)
1 11 21 2 12 22 3 13 23 4 14 24 5 15 25
Beispiel zu 2:
paste -s <(seq 1 5) <(seq 11 15) <(seq 21 25)
1 2 3 4 5 11 12 13 14 15 21 22 23 24 25
Der Befehl cut ist gewissermaßen die Umkehroperation zu paste
, da damit einzelne Spalten aus einer Eingabe heraus gelöst werden können.
Das Programm paste ist im essentiellen Paket
coreutils
von Ubuntu enthalten und ist deshalb auf jedem System installiert.
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. |
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.
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
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
Aus der Standardeingabe kann nur ein Mal gelesen werden, deshalb verteilen sich die Zeilen.
Shell/Befehlsübersicht Übersicht über verschiedene Shell-Befehle
Die umgekehrte Operation ist cut.
Diese Revision wurde am 2. Juni 2013 20:45 von noisefloor erstellt.