ZB habe ich eine Datei (produziert mit echo -e "var1\tvar2\t\var3\tvar4" > foo
), die ausgegeben wird als:
$ cat foo
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Ich würde die Ausgabe wie folgt bevorzugen (hier habe ich vim
und verwendet :set tabstop=14
):
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Ich kann die gleiche Funktionalität erhalten, cat
wenn ich $ tabs=15
in Bash verwende (siehe diese Frage ). Gibt es ein Programm, das diese Art der Formatierung automatisch durchführt? Ich möchte tabs
vor dem cat
Erstellen einer Datei nicht mit dem Wert experimentieren .
shell
command-line
cat
columns
Sebastian
quelle
quelle
-s $'\t'
(jedoch nicht in jeder Spaltenimplementierung gefundene) hinzufügen, falls einige der Felder Leerzeichen enthalten.$'\t'
bedeutet Tabulatorzeichen. Neue Zeile ist$'\n'
und so weiter.column -ts: /etc/passwd
. Sieht gut aus!-n
, dh vermeiden Sie das Zusammenführen mehrerer benachbarter TrennzeichenMehrere Möglichkeiten:
column ist kein Standardbefehl, einige Implementierungen / Versionen unterstützen die Option -s nicht. Die Breite der Spalte wird anhand der Eingabe berechnet. Dies bedeutet jedoch, dass die Anzeige erst gestartet werden kann, wenn alle Eingaben eingegeben wurden.
$'...'
Die Syntax von ksh93 ist auch in zsh und bash enthalten.Mit zsh:
quelle
Sie können auch
rs
als Alternative verwendencolumn -t
:-c
Ändert das Trennzeichen für Eingabespalten, setzt jedoch-c
allein das Trennzeichen für Eingabespalten auf eine Registerkarte.-z
Stellt die Breite jeder Spalte auf die Breite des längsten Eintrags der Spalte ein, anstatt alle Spalten gleich breit zu machen. Wenn einige Zeilen weniger Spalten als die erste Zeile enthalten, fügen Sie hinzu-n
.quelle
rs
ist das? Ich habe diesen Befehl weder auf meinem CentOS noch auf meinen Ubuntu / Mint-Systemen installiert.rs
, damit Sie es mit installieren könnenapt-get install rs
.(x=$(cat);rs -c -z $(wc -l<<<"$x")<<<"$x")
? Ich weiß nicht, wie ich das mit einer CSV-Datei machen würdeEin weiteres Tool, mit dem dies möglich ist, ist TSV Utilities
tsv-pretty
von eBay (Haftungsausschluss: Ich bin der Autor). Der zusätzliche Schritt besteht darin, numerische Felder am Dezimalpunkt auszurichten. Zum Beispiel:Es gibt verschiedene Formatierungsoptionen. Zum Beispiel
-u
unterstreicht die Kopf- und-f
formatiert den Schwimmer in einem Feld in ähnlicher Weise für die Lesbarkeit:Weitere Informationen finden Sie in der tsv-pretty Referenz .
quelle
Die Frage betraf die Ausgabe tabulatorgetrennter Spalten.
Die richtige Antwort ist also eine kleine Anpassung der Antwort von @nisetama. Ich habe die Option -C $ '\ t' hinzugefügt, mit der die Ausgabeformatierung festgelegt wird.
Kudo zu @nisetama obwohl :)
quelle
PROBENLÄUFE
REF LIB unter: https://github.com/gdbtek/linux-cookbooks/blob/master/libraries/util.bash
quelle
sed
verwendet werden.