Die Antwort von traybold mit printf "%14s %14s %14s %14s %14s\n" $(cat data.txt)
und sollte wahrscheinlich verwendet werden, aber beachte, dass die letzte Zeile leer bis zur vollen Breite aufgefüllt ist. Auch wenn die Datendatei sehr groß ist (256 KiB vielleicht; fast sicher, bevor Sie 1 MiB erreichen), wird Ihnen der Platz für die Befehlszeilenargumente zu printf
ausgehen. Die folgenden Lösungen funktionieren mit Dateien, die viele Megabyte groß sind, ohne das System zu beeinträchtigen.
Sie können pr
im mehrspaltigen Modus fast verwenden ( pr -5 -l1 -t
), aber es macht die Spalten nicht richtig, so dass die -
-Zeichen nicht korrekt dargestellt werden. OTOH, du könntest dann die Ausgabe in awk füttern, um die Rechtfertigung zu machen:
%Vor%
Aber wenn du awk
in das Spiel ziehst, kann es auch die 'Transposition' für dich übernehmen - dazu braucht es allerdings ein bisschen mehr Code.
Dein Vorschlag funktioniert fast, aber wenn ich es versuche, bekomme ich: 0.8725220D- 0.1609633D- 0.2598447D-
; Der Exponent jeder Zahl ist weg.
Einige der Wunder von pr
. Standardmäßig verwendet es Registerkarten, um Spalten zu trennen. Sie können dies mit -s' '
überschreiben oder indem Sie angeben, dass die Ausgabebreite breiter ist (z. B. -w100
). Beachten Sie, dass Argumentwerte wie der Platz an die Option angehängt werden müssen, zumindest in traditionellen Implementierungen von pr
(aber -w 100
funktioniert OK).
%Vor%
Alle diese pr | awk
solutions leeren die letzte Zeile auf die volle Breite.
Hier sind zwei äquivalente awk
-Skripts, die den Auftrag in einem Befehl ausführen. Man spreizt den Code über 2 Zeilen, der andere über 16 Zeilen (aber es ist einfacher zu lesen):
Option 1:
%Vor%
Option 2:
%Vor%
Die Ausgabe ist die gleiche wie zuvor, nur dass keines dieser Felder die letzte Zeile ausfüllt:
%Vor%
Es wäre einfacher und kürzer, Code zu schreiben, der das getan hat; Der Reset-Code würde auch delete a
verwenden, um das Array zu löschen, und der END-Block würde einfach i
testen und printf
aus dem Hauptcode verwenden:
%Vor%
___ qstnhdr ___ Ausgabe in Spalten formatieren [bash, grep, sed, awk]
___ answer19850688 ___
Wow, habe das schon lange nicht mehr gesehen. Es gibt mehrere Möglichkeiten:
Der alte pr -Befehl wurde für diese Art von Arbeit verwendet - besonders, wenn Sie wollten, dass diese Spalten vertikal statt horizontal gehen.
Allerdings würde ich %code% verwenden, was mir erlaubt, den Text konstant zu halten und dann einen Zähler und den Modulo zu verwenden Operator zum Zählen, wenn ich fünf Elemente in einer Zeile habe. Der modulo Operator wird manchmal als Rest Operator bezeichnet. Es funktioniert jedoch wie eine Uhr:
%Vor%
Dem Format für %code% fehlt das Minus (d. h. %code% ), wodurch der Text rechts anstatt links ausgerichtet wird. Auf diese Weise wirft mich das Minus nicht ab.
%Vor%
Beachten Sie, dass am Ende kein Zeilenumbruch eingefügt wird, wenn die Anzahl der Zeilen kein Vielfaches von 5 ist. Ist das ein Problem?
___ tag123awk ___ AWK ist eine interpretierte Programmiersprache, die für die Textverarbeitung entwickelt wurde und in der Regel als Datenextraktions- und Berichtswerkzeug verwendet wird. AWK wird weitgehend mit Unix-Systemen verwendet. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Programmierung mit AWK- oder AWK-basierten APIs bezieht. Fragen zur Verwendung oder zur Fehlerbehebung von AWK-Befehlszeilenoptionen selbst sind nicht Thema.
___ tag123sed ___ Sed (Stream EDitor) ist ein Befehlszeilen-Editor für die POSIX-Umgebung. Sed verarbeitet eine oder mehrere Dateien gemäß einem Editier-Skript und schreibt die Ergebnisse in die Standardausgabe. Es wurde in den Bell Labs entwickelt und existiert seit Mitte der 70er Jahre. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit sed- oder sed-basierten APIs bezieht. Fragen zur Verwendung oder Problembehandlung von sed-Befehlszeilenoptionen selbst sind nicht Thema.
___ tag123grep ___ grep ist ein Befehlszeilen-Textsuchprogramm, das ursprünglich für Unix geschrieben wurde. Es verwendet reguläre Ausdrücke für die Textübereinstimmung und wird häufig als Filter in Pipelines verwendet. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Programmierung mit grep- oder grep-basierten APIs bezieht. Fragen zur Verwendung oder Problembehandlung der Befehlszeilenoptionen von Grep selbst sind off-topic.
___ answer35624512 ___
Eine knifflige Alternative:
%Vor%
Verglichen mit dem @ traybold-Ansatz hat es den Nachteil, dass Elemente nummeriert sind (was nicht sein kann, was Sie wollen), aber es hat auch den Vorteil, die Anzahl der Spalten automatisch an die Eingabezeichenfolgen und die Terminalbreite anzupassen. p>
___ tag123bash ___ Für Fragen zu Skripten, die für die Bash-Befehlsshell geschrieben wurden. Für Shell-Skripte mit Fehlern, überprüfen Sie diese bitte mit dem Shellcheck-Programm (oder im web-Shellcheck-Server unter https://shellcheck.net), bevor Sie hier posten. Fragen zur interaktiven Nutzung von Bash sind bei Super Usern eher Thema als bei Stack Overflow.
___ qstntxt ___
Guten Tag,
Ich habe mich gefragt, wie man die folgende Ausgabe formatiert:
%Vor%
in fünf Spalten, indem zuerst transponiert wird:
%Vor%
Vielen Dank im Voraus für jeden Vorschlag
BTW Mein erster Ansatz war: %code%