Se sai che i file di input non hanno tabulazioni, usa expand
semplifica la risposta di @oyss:
paste one.txt two.txt | expand --tabs=50
Se potrebbero esserci schede nei file di input, puoi sempre espandere prima:
paste <(expand one.txt) <(expand two.txt) | expand --tabs=50
Puoi usare pr
per fare questo, usando il -m
flag per unire i file, uno per colonna, e -t
per omettere le intestazioni, es.
pr -m -t one.txt two.txt
uscite:
apple The quick brown fox..
pear foo
longer line than the last two bar
last line linux
skipped a line
Vedi anche:
- Stampa il risultato del comando fianco a fianco
- Combina i file di testo per colonna
Per espandere un po 'la risposta di @ Hasturkun:per impostazione predefinita pr
usa solo 72 colonne per il suo output, ma è relativamente facile fare in modo che utilizzi tutte le colonne disponibili della tua finestra di terminale:
pr -w $COLUMNS -m -t one.txt two.txt
La maggior parte delle shell memorizzerà (e aggiornerà) la larghezza dello schermo del tuo terminale nel $COLUMNS
variabile di shell, quindi stiamo solo passando quel valore a pr
da utilizzare per l'impostazione della larghezza dell'output.
Questo risponde anche alla domanda di @Matt:
Esiste un modo per consentire a pr di rilevare automaticamente la larghezza dello schermo?
Quindi no:pr
di per sé non è in grado di rilevare la larghezza dello schermo, ma lo aiutiamo un po' passando la larghezza del terminale tramite il suo -w
opzione.
Nota che $COLUMNS
è una variabile di shell, non una variabile di ambiente, quindi non viene esportata nei processi figlio, e quindi l'approccio di cui sopra probabilmente non funzionerà negli script, ma solo nei TTY interattivi... vedi LINES and COLUMNS variabili ambientali perse in uno script per approcci alternativi.