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)




