Je veux imprimer deux fichiers sur deux colonnes — le premier fichier sur le côté gauche et le second sur le côté droit.
paste
ne fait pas le travail, car il ne peut insérer qu'un caractère comme délimiteur, donc si les premières lignes de fichier ont une longueur différente, la sortie sera tordue :
$ cat file1
looooooooong line
line
$ cat file2
hello
world
$ paste file1 file2
looooooooong line hello
line world
S'il s'agissait d'une commande pour ajouter des espaces de fin comme fmt --add-spaces --width 50
le problème serait résolu :
$ paste <(fmt --add-spaces --width 50 file1) file2
looooooooong line hello
line world
Mais je ne connais pas de moyen simple de le faire.
Alors comment fusionner et imprimer plusieurs fichiers horizontalement sans se tordre ? En fait, je veux juste les regarder simultanément.
UPD : la commande pour ajouter des espaces de fin existe (par exemple, xargs -d 'n' printf '%-50sn'
)
Mais une solution comme
$ paste <(add-trailing-spaces file1) file2
ne fonctionne pas comme prévu lorsque le fichier1 contient moins de lignes que le fichier2.
Réponse acceptée :
Qu'en est-il de paste file{1,2}| column -s $'t' -tn
?
looooooooong line line hello
line world
-
Ceci indique
column
utiliserTab
comme séparateur de colonnes où nous le prenons dupaste
commande qui est le séparateur par défaut ici s'il n'est pas spécifié ; généralement :paste -d'X' file{1,2}| column -s $'X' -tn
où
X
signifie n'importe quel caractère unique. Vous devez choisir celui qui a accordé que cela ne se produira pas dans vos fichiers. -
Le
-t
L'option est utilisée pour déterminer le nombre de colonnes que contient l'entrée. - Cela n'ajoutera pas de long onglet entre deux fichiers contrairement aux autres réponses.
-
cela fonctionnera même s'il y avait des lignes vides dans le fichier1 et il n'imprimera pas le deuxième fichier dans la zone d'impression du fichier1 , voir ci-dessous entrée/sortie
Fichier d'entrée 1 :
looooooooong line line
Fichier d'entrée 2 :
hello world
Sortie :
looooooooong line hello world line