Si vous savez que les fichiers d'entrée n'ont pas d'onglets, utilisez expand
simplifie la réponse de @oyss :
paste one.txt two.txt | expand --tabs=50
S'il peut y avoir des onglets dans les fichiers d'entrée, vous pouvez toujours développer en premier :
paste <(expand one.txt) <(expand two.txt) | expand --tabs=50
Vous pouvez utiliser pr
pour ce faire, en utilisant le -m
flag pour fusionner les fichiers, un par colonne, et -t
pour omettre les en-têtes, par exemple.
pr -m -t one.txt two.txt
sorties :
apple The quick brown fox..
pear foo
longer line than the last two bar
last line linux
skipped a line
Voir aussi :
- Imprimer le résultat de la commande côte à côte
- Combiner les fichiers texte par colonne
Pour développer un peu la réponse de @Hasturkun :par défaut pr
utilise seulement 72 colonnes pour sa sortie, mais il est relativement facile de lui faire utiliser toutes les colonnes disponibles de votre fenêtre de terminal :
pr -w $COLUMNS -m -t one.txt two.txt
La plupart des shells stockeront (et mettront à jour) la largeur d'écran de votre terminal dans le $COLUMNS
variable shell, nous transmettons donc simplement cette valeur à pr
à utiliser pour le réglage de la largeur de sa sortie.
Cela répond également à la question de @Matt :
Existe-t-il un moyen pour pr de détecter automatiquement la largeur de l'écran ?
Donc, non :pr
lui-même ne peut pas détecter la largeur de l'écran, mais nous l'aidons un peu en passant la largeur du terminal via son -w
option.
Notez que $COLUMNS
est une variable shell, pas une variable d'environnement, donc elle n'est pas exportée vers les processus enfants, et donc l'approche ci-dessus ne fonctionnera probablement pas dans les scripts, uniquement dans les TTY interactifs ... voir les variables d'environnement LINES et COLUMNS perdues dans un script pour approches alternatives.