Voglio stampare due file su due colonne:il primo file sul lato sinistro e il secondo sul lato destro.
paste
non fa il lavoro, perché può solo inserire un carattere come delimitatore, quindi se le prime righe del file hanno una lunghezza diversa l'output sarà distorto:
$ cat file1
looooooooong line
line
$ cat file2
hello
world
$ paste file1 file2
looooooooong line hello
line world
Se fosse un comando per aggiungere spazi finali come fmt --add-spaces --width 50
il problema sarebbe risolto:
$ paste <(fmt --add-spaces --width 50 file1) file2
looooooooong line hello
line world
Ma non conosco un modo semplice per farlo.
Quindi, come unire e stampare più file orizzontalmente senza torcere? In realtà, voglio solo guardarli contemporaneamente.
UPD: esiste un comando per aggiungere spazi finali (ad esempio, xargs -d 'n' printf '%-50sn'
)
Ma una soluzione come
$ paste <(add-trailing-spaces file1) file2
non funziona come previsto quando file1 ha meno righe di file2.
Risposta accettata:
Che dire di paste file{1,2}| column -s $'t' -tn
?
looooooooong line line hello
line world
-
Questo sta dicendo
column
per utilizzareTab
come separatore di colonne dove lo prendiamo dapaste
comando che è il separatore predefinito lì se non specificato; generalmente:paste -d'X' file{1,2}| column -s $'X' -tn
dove
X
indica qualsiasi singolo carattere. Devi scegliere quello che ha concesso che non si verificherà nei tuoi file. -
Il
-t
l'opzione viene utilizzata per determinare il numero di colonne contenute nell'input. - Questo non aggiungerà una lunga scheda tra due file mentre altre risposte lo fanno.
-
funziona anche se c'erano righe vuote in file1 e non stamperà il secondo file nell'area di stampa di file1 , vedi sotto input/output
File di input1:
looooooooong line line
File di input2:
hello world
Uscita:
looooooooong line hello world line