GNU/Linux >> Tutoriels Linux >  >> Linux

Imprimer deux fichiers sur deux colonnes ?

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 utiliser Tab comme séparateur de colonnes où nous le prenons du paste 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

    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
    

Linux
  1. Comparez deux colonnes de fichiers différents et imprimez si cela correspond ?

  2. Lum - Fusionner des colonnes à partir de deux fichiers distincts ?

  3. Produit cartésien de deux fichiers (sous forme d'ensembles de lignes) sous GNU/Linux

  4. Afficher deux fichiers côte à côte

  5. comment fusionner deux fichiers de manière cohérente ligne par ligne

Imprimer des fichiers depuis votre terminal Linux

Comment lire des fichiers ligne par ligne dans Bash

Comment afficher deux fichiers côte à côte sous Linux

Comment comparer deux fichiers dans un terminal Linux

Comparer deux fichiers dans un terminal Linux

Différence d'espace entre deux fichiers sous Linux