Introduzione

Paste è un comando che ti consente di unire (Merge Lines) orizzontalmente righe di file. Produce linee costituite dalle linee corrispondenti in sequenza di ciascun file specificato come argomento, separate da tabs.

In questo tutorial, spiegheremo come usare il comando paste.

Come usare il comando paste

paste è una delle utility da riga di comando Linux e Unix meno conosciute e utilizzate.

La sintassi generale per il comando paste è la seguente:

paste [OPTION].. [FILE]...

Se non viene indicato alcun file di input o quando "-" viene utilizzato come argomento, paste utilizza l'input standard.

Supponiamo di avere i seguenti file.

file1:

testo1
testo2
testo3
testo4
testo5

file2:

titolo1
titolo2
titolo3
titolo4

Se invocato senza un'opzione paste, leggerà tutti i file forniti come argomenti e unirà in orizzontale le righe corrispondenti dei file, separate da spazio:

paste file1 file2

Il risultato sarà simile al seguente:

testo1 titolo1
testo2 titolo2
testo3 titolo3
testo4 titolo4
testo5

Invece di visualizzare l'output sullo schermo, è possibile reindirizzarlo a un file utilizzando gli operatori >,>>

paste file1 file2 > file3

Se il file non esiste, verrà creato. L' operatore > sovrascriverà un file esistente, mentre l'operatore >> aggiungerà l'output al file.

L' opzione -d, -delimiters consente di specificare un elenco di caratteri da utilizzare come delimitatori anziché utilizzare il separatore predefinito TAB:

Ogni delimitatore viene utilizzato consecutivamente. Quando l'elenco è esaurito, paste ricomincia dal primo carattere delimitatore.

Per utilizzare il carattere _ (trattino basso) come delimitatore anziché TAB, digitare:

paste -d '_' file1 file2

Il risultato sarà simile al seguente:

testo1_titolo1
testo2_titolo2
testo3_titolo3
testo4_titolo4
testo5_

Possiamo utilizzare anche due delimitatori, ecco un esempio:

paste -d '%|' file1 file2 file1

Le righe del primo e del secondo file sono separate dal primo carattere dall'elenco dei delimitatori. La seconda e la terza riga del file sono separate dal secondo delimitatore.

Se sono stati forniti più file, paste ricomincia dall'inizio della lista.

testo1%titolo1|testo1
testo2%titolo2|testo2
testo3%titolo3|testo2
testo4%titolo4|testo4
testo5%|testo5

L' opzione -s (--serial) permette la visualizzazione delle righe di un file alla volta:

paste -s file1 file2

Il comando unirà tutte le righe del file specificato in righe separate:

testo1 testo2 testo3 testo4 testo5
titolo1 titolo2 titolo3 titolo4

Quando viene utilizzato con l'opzione -z (--zero-terminated), paste utilizza un carattere null per delimitare gli articoli anziché il carattere predefinito newline. Questa opzione è utile quando paste viene utilizzato in combinazione con i comandi find -print0 e xargs -0 per gestire nomi di file contenenti caratteri speciali.

Conclusione

In questo tutorial abbiamo visto come utilizzare il comando paste su Linux. Il comando paste viene utilizzato per unire le righe corrispondenti di determinati file.