Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Linux: maneggiare file di testo da riga di comando con paste

Link copiato negli appunti

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

Ti consigliamo anche