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
columnutiliserTabcomme séparateur de colonnes où nous le prenons dupastecommande 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' -tnoù
Xsignifie n'importe quel caractère unique. Vous devez choisir celui qui a accordé que cela ne se produira pas dans vos fichiers. -
Le
-tL'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 lineFichier d'entrée 2 :
hello worldSortie :
looooooooong line hello world line