paste (Unix)

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

paste è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1] e GNU[2], 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.

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.

Dati tre file contenenti le linee che seguono

file1.txt:

uno
due
tre
quattro
cinque

file2.txt:

primo
secondo
terzo

file3.txt:

Alice
Bruno
Carlo
Daniela

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
  1. ^ (EN) paste, in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 14 giugno 2008.
  2. ^ (EN) paste: Merge lines of files, in GNU Coreutils manual. URL consultato il 14 giugno 2008.

Voci correlate

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica