2012-09-17 1 views
8

Ich mache eine lange Leitung, die mit ...| awk '{print $5"\t\t" $3"\t"$4}' im Linux-Terminal endet. Die Spalten sind mit Tabulatoren gefüllt. Die ersten Spalteneinträge haben eine unterschiedliche Anzahl von Zeichen, sodass die Ergebnisse der zweiten Spalte nicht perfekt vertikal sind. Wie lässt man den Tisch perfekt aussehen?awk zur Ausgabe von tabellenartigen oder Excel-ähnlichen Spalten in Linux-Terminal?

enter image description here

+0

Probieren awk Spalte Ausrichtung Flags ... versuchen Sie hier: http: // sta ckoverflow.com/questions/6345429/how-do-i-print-some-text-in-bash-and-pad-it-with-spaces-to-a-certain-width –

Antwort

23

versuchen, das Ergebnis zu Spalte -t ​​Rohr:

...| awk '{print $5"\t\t" $3"\t"$4}'|column -t 

hoffen, dass es

+0

| Spalte -t ​​half =) Danke Sie! – Ivan

+1

+1 Sie können auch den Befehl 'tabs' verwenden, zum Beispiel versuchen, eine große Tab-Größe zu setzen:' Tabs 25'. Dann renne deine Pfeife. Wenn es groß genug ist, erhalten Sie das gewünschte Ergebnis. Ich bevorzuge jedoch die Verwendung von 'column -t' – Steve

+0

Wenn Sie in 'column' verzweigen, brauchen Sie nicht mehr das Doppel-Tab, das dem ersten Feld folgt (ich nehme an, dass ein breiter Wert in diesem Feld berücksichtigt werden sollte). – chepner

6

hilft, wenn Ihre Felder Tab getrennt, um die folgende Zeile ein Skript eine Tabelle mit Zellen drucken konnten Grenzen

sed -e 's/\t/_|/g' table.txt | column -t -s '_' | awk '1;!(NR%1){print "-----------------------------------------------------------------------";}' 

Description   |value     |Comment 
----------------------------------------------------------------------- 
Internal    |322     | 
----------------------------------------------------------------------- 
External    |42515     | 
-----------------------------------------------------------------------