Il comando paste può essere particolarmente utile per lavorare sui file di testo in ambito Linux e Unix; non solo infatti può operare e ordinare stringhe in un file di testo singolo, ma può anche confrontare, unire ed eseguire operazioni su più file alla volta, rendendo così facile il compito di power user molto pigri, o sysadmin con il tempo alle calcagna.
Prendiamo come file di esempio questo:
$ cat file1
Linux
Unix
Solaris
HPUX
AIX
Il comando paste
Senza opzioni, il comando esegue esattamente quello che fa anche cat: lista una per una le righe del file.
$ paste file1
Linux
Unix
Solaris
HPUX
AIX
Unire tutte le righe di un file
L´opzione -s di paste unisce tutte le righe di un file. Senza specificare alcun delimitatore, la scelta predefinita utilizzata per separare le colonne è il TAB.
$ paste -s file1
Linux Unix Solaris HPUX AIX
Unire tutte le righe usando un delimitatore
Esattamente come sopra, possiamo unire le righe di un file, scegliendo però un delimitatore con l´opzione -d. Usando una combinazione di -d e -s, e volendo la virgola come delimitatore, otteniamo quanto segue:
$ paste -d, -s file1
Linux,Unix,Solaris,HPUX,AIX
Accorciare un file incollando i dati in due colonne
Con il carattere ´-´ paste incolonna i dati. Più trattini ci sono, tante più colonne crea: per creare due colonne con i dati che abbiamo, basta questo comando:
$ paste - - < file1
Linux Unix
Solaris HPUX
AIX
Accorciare un file incolonnando l´output e usando un separatore
Si possono delimitare le colonne come abbiamo fatto in precedenza anche incolonnando l´output di paste. Come prima usiamo l´opzione -d:
$ paste -d´:´ - - < file1
Linux:Unix
Solaris:HPUX
AIX:
File multipli: affiancare gli output
Possiamo confrontare due file affiancandone le righe tramite paste. Supponiamo di avere un ulteriore file così composto:
$ cat file2
Suse
Fedora
CentOS
OEL
Ubuntu
Per incolonnare i due file nello stesso output è sufficiente invocare paste contemporaneamente sui due file.
$ paste file1 file2
Linux Suse
Unix Fedora
Solaris CentOS
HPUX OEL
AIX Ubuntu
Affiancare due file con l´uso di separatori
L´opzione -d di paste ci viene ancora una volta in aiuto se si tratta di decidere come delimitare le colonne per il merge dei due file in uno stesso output:
$ paste -d, file1 file2
Linux,Suse
Unix,Fedora
Solaris,CentOS
HPUX,OEL
AIX,Ubuntu
Lettura alternata
Se non vogliamo entrambi i file incolonnati separatamente, ma tutto l´output in una sola colonna, basta utilizzare il delimitatore giusto (ossia una newline) per fare si che vengano impilate in maniera alternata le strighe contenute nei due file.
$ paste -d´
´ file1 file2
Linux
Suse
Unix
Fedora
Solaris
CentOS
HPUX
OEL
AIX
Ubuntu