GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Zwei Dateien in zwei Spalten drucken?

Ich möchte zwei Dateien in zwei Spalten drucken – die erste Datei auf der linken Seite und die zweite auf der rechten Seite.

paste macht das nicht, weil es nur ein Zeichen als Trennzeichen einfügen kann, also wenn die ersten Dateizeilen eine andere Länge haben, wird die Ausgabe verdreht:

$ cat file1
looooooooong line
line
$ cat file2
hello
world
$ paste file1 file2
looooooooong line   hello
line    world

Wenn es ein Befehl zum Hinzufügen von Leerzeichen wie fmt --add-spaces --width 50 wäre Das Problem wäre gelöst:

$ paste <(fmt --add-spaces --width 50 file1) file2
looooooooong line                                 hello
line                                              world

Aber ich kenne keinen einfachen Weg, dies zu tun.

Wie also mehrere Dateien horizontal zusammenführen und drucken, ohne sie zu verdrehen? Eigentlich möchte ich sie mir nur gleichzeitig ansehen.

UPD: Befehl zum Hinzufügen nachgestellter Leerzeichen existiert (z. B. xargs -d 'n' printf '%-50sn' )

Aber Lösung wie

$ paste <(add-trailing-spaces file1) file2

funktioniert nicht wie erwartet, wenn Datei1 weniger Zeilen als Datei2 hat.

Akzeptierte Antwort:

Was ist mit paste file{1,2}| column -s $'t' -tn ?

looooooooong line line  hello
line                    world
  • Dies sagt column um Tab zu verwenden als Spaltentrennzeichen, wo wir es von paste nehmen Befehl, der dort das Standardtrennzeichen ist, wenn nicht angegeben; allgemein:

    paste -d'X' file{1,2}| column -s $'X' -tn

    wobei X bedeutet jedes einzelne Zeichen. Sie müssen diejenige auswählen, die nicht in Ihren Dateien enthalten ist.

  • Das -t Option wird verwendet, um die Anzahl der Spalten zu bestimmen, die die Eingabe enthält.

  • Dies fügt keinen langen Tabulator zwischen zwei Dateien hinzu, während andere Antworten dies tun.
  • Dies funktioniert auch dann, wenn in Datei1 leere Zeilen vorhanden waren, und es wird keine zweite Datei im Druckbereich von Datei1 gedruckt , siehe unten Eingabe/Ausgabe

    Eingabedatei1:

    looooooooong line
    
    line
    

    Eingabedatei2:

    hello
    world
    

    Ausgabe:

    looooooooong line  hello
                       world
    line
    

Linux
  1. Lum – Spalten aus zwei separaten Dateien zusammenführen?

  2. unix - Anzahl der Spalten in der Datei

  3. Zeigt zwei Dateien nebeneinander an

  4. wie man zwei Dateien konsistent Zeile für Zeile zusammenführt

  5. Konvertieren von JSON-Pretty-Print in eine Zeile

Drucken Sie Dateien von Ihrem Linux-Terminal aus

So lesen Sie Dateien Zeile für Zeile in Bash

So zeigen Sie zwei Dateien nebeneinander in Linux an

So vergleichen Sie zwei Dateien im Linux-Terminal

Vergleichen von zwei Dateien im Linux-Terminal

Unterschied in Leerzeichen zwischen zwei Dateien unter Linux