paste è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX e GNU, che legge uno o più file di testo (o lo standard input) e ne unisce le linee corrispondenti, oppure unisce tutte le linee di ciascun file in un'unica linea, mostrando in entrambi i casi il risultato sullo standard output. È un tipo di filtro.

Sintassi

La sintassi generale di paste è la seguente:

paste [-d separatori] [-s] [--] [file1 [file2 …] ]

I parametri falcoltativi file specificano i nomi dei file di testo di cui unire le linee. Se non specificati, i dati sono letti dallo standard input. Uno o più parametri possono essere dei trattini ("-") per indicare di leggere in quel punto una linea dallo standard input.

Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.

Il comportamento predefinito prevede di unire le linee usando il carattere di controllo tab come separatore; in caso di file che contengono un numero diverso tra loro di linee, paste si comporta come se leggesse linee vuote dai file più corti (tranne quando è in uso l'opzione -s).

Tra le opzioni principali vi sono:

-d separatori
Unisce le linee usando a rotazione i caratteri elencati in separatori. All'inizio di ogni nuova linea di output riprende ad usare il primo carattere separatore dell'elenco.
-s
Unisce tra loro tutte le linee dei primo file, poi quelle del secondo, poi quelle del terzo, e così via, producendo una sola linea per ciascun file.

Esempi

Dati tre file contenenti le linee che seguono

Unisce le linee corrispondenti di ciascun file, usando il carattere tab come separatore:

$ paste file1.txt file2.txt file3.txt
uno     primo   Alice
due     secondo Bruno
tre     terzo   Carlo
quattro         Daniela
cinque

Unisce le linee corrispondenti di ciascun file, usando una barra verticale ("|") per separare le linee del primo e del secondo file, ed il carattere punto e virgola (";") per separare le linee del secondo e del terzo file:

$ paste -d "|;" file1.txt file2.txt file3.txt
uno|primo;Alice
due|secondo;Bruno
tre|terzo;Carlo
quattro|;Daniela
cinque|;

Unisce le linee di ciascun file in un'unica linea, usando il carattere tab come separatore:

$ paste -s file1.txt file2.txt file3.txt
uno     due     tre     quattro cinque
primo   secondo terzo
Alice   Bruno   Carlo   Daniela

Unisce le linee di ciascun file in un'unica linea, usando a rotazione una barra verticale ("|") ed il carattere punto e virgola (";") per separare gli elementi:

$ paste -d "|;" -s file1.txt file2.txt file3.txt
uno|due;tre|quattro;cinque
primo|secondo;terzo
Alice|Bruno;Carlo|Daniela

Note

Voci correlate

  • cut (Unix)
  • join (Unix)

text processing Fast version of paste Unix & Linux Stack Exchange

Paste din orz Das Kaffee

Paste Behance

Linux paste Command Explained For Beginners (5 Examples)

Was ist der Unterschied zwischen