Wenn Sie wissen, dass die Eingabedateien keine Tabulatoren haben, verwenden Sie expand
vereinfacht die Antwort von @oyss:
paste one.txt two.txt | expand --tabs=50
Wenn es Tabulatoren in den Eingabedateien geben könnte, können Sie immer zuerst expandieren:
paste <(expand one.txt) <(expand two.txt) | expand --tabs=50
Sie können pr
verwenden Verwenden Sie dazu die -m
-Flag zum Zusammenführen der Dateien, eine pro Spalte, und -t
um Kopfzeilen wegzulassen, zB.
pr -m -t one.txt two.txt
Ausgaben:
apple The quick brown fox..
pear foo
longer line than the last two bar
last line linux
skipped a line
Siehe auch:
- Befehlsergebnis nebeneinander drucken
- Textdateien spaltenweise kombinieren
Um die Antwort von @Hasturkun etwas zu erweitern:standardmäßig pr
verwendet nur 72 Spalten für seine Ausgabe, aber es ist relativ einfach, alle verfügbaren Spalten Ihres Terminalfensters zu verwenden:
pr -w $COLUMNS -m -t one.txt two.txt
Die meisten Shells speichern (und aktualisieren) die Bildschirmbreite Ihres Terminals im $COLUMNS
Shell-Variable, also übergeben wir diesen Wert einfach an pr
für die Breiteneinstellung der Ausgabe zu verwenden.
Dies beantwortet auch die Frage von @Matt:
Gibt es eine Möglichkeit für pr, die Bildschirmbreite automatisch zu erkennen?
Also nein:pr
selbst kann die Bildschirmbreite nicht erkennen, aber wir helfen ein wenig, indem wir die Breite des Terminals über seinen -w
übergeben Option.
Beachten Sie, dass $COLUMNS
ist eine Shell-Variable, keine Umgebungsvariable, daher wird sie nicht in untergeordnete Prozesse exportiert, und daher funktioniert der obige Ansatz wahrscheinlich nicht in Skripten, sondern nur in interaktiven TTYs ... siehe LINES- und COLUMNS-Umgebungsvariablen, die in einem Skript verloren gehen für alternative Ansätze.