Ho due file paralleli con lo stesso numero di righe in due lingue e ho intenzione di unire questi due file riga per riga con il delimitatore ||| . Ad esempio, i due file sono i seguenti:
File A:
1Mo 1,1 I love you.
1Mo 1,2 I like you.
Hi 1,3 I am hungry.
Hi 1,4 I am foolish.
File B:
1Mo 1,1 Ich liebe dich.
1Mo 1,2 Ich mag dich.
Hi 1,3 Ich habe Durst.
Hi 1,4 Ich bin neu.
L'output previsto è questo:
1Mo 1,1 I love you. ||| 1Mo 1,1 Ich liebe dich.
1Mo 1,2 I like you. ||| 1Mo 1,2 Ich mag dich.
Hi 1,3 I am hungry. ||| Hi 1,3 Ich habe Durst.
Hi 1,4 I am foolish. ||| Hi 1,4 Ich bin neu.
 Ho provato a paste comando come:
paste -d "|||" fileA fileB
Ma l'output restituito contiene solo una pipe come:
1Mo 1,1 I love you. |1Mo 1,1 Ich liebe dich.
1Mo 1,2 I like you. |1Mo 1,2 Ich mag dich.
 
 C'è un modo per separare ogni coppia di linee con una trippa ||| ?
Risposta accettata:
Con pasta POSIX:
:|paste -d ' ||| ' fileA - - - - fileB
 paste concatenerà le righe corrispondenti di tutti i file di input. Qui abbiamo sei file, fileA , quattro file fittizi dallo standard in - e fileB .
 L'elenco dei delimitatori include uno spazio, tre pipe e uno spazio nell'ordine che verrà utilizzato da paste circolarmente.
 Per la prima riga di sei file, fileA verrà concatenato con il primo file fittizio (che non è nulla, grazie all'operatore no-op :), produrrà line1-fileA<space> .
 Il primo file fittizio sarà concatenato con il secondo da una pipe, produrrà line1-fileA | , quindi il secondo file fittizio con il terzo file fittizio, producono line1-fileA || , il terzo file fittizio con il quarto file fittizio, produce line1-fileA ||| .
 E il quarto file fittizio con fileB , produrre line1-fileA ||| line1-fileB .
Questi passaggi verranno ripetuti per tutte le righe, dandoti il risultato atteso.
 L'uso di :| è per la digitazione ridotta e viene utilizzato principalmente nella shell interattiva. In uno script, dovresti usare:
</dev/null paste -d ' ||| ' fileA - - - - fileB
per impedire la generazione di una subshell.