2012-09-17 12 views
8

Faccio un pipe lungo, che termina con ...| awk '{print $5"\t\t" $3"\t"$4}' nel terminale Linux. Le colonne sono imbottite con schede. Le prime voci della colonna hanno un numero diverso di caratteri, quindi i risultati della seconda colonna non sono perfettamente verticali. Come rendere il tavolo perfetto?awk per generare colonne simili a tabelle o di tipo Excel nel terminale Linux?

enter image description here

+0

Prova le flag di allineamento colonna di awk ... prova a guardare qui: http: // sta ckoverflow.com/questions/6345429/how-do-i-print-some-text-in-bash-and-pad-it-with-spaces-to-a-certain-width –

risposta

23

cercare di pipe il risultato a colonna -t:

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

Speranza che aiuta

+0

| column -t help =) Grazie tu! – Ivan

+1

+1 È anche possibile utilizzare il comando 'tabs', ad esempio provare ad impostare una dimensione di tabulazione grande:' tabs 25'. Quindi esegui la pipa. Se è abbastanza grande otterrai il risultato desiderato. Tuttavia, preferisco usare 'column -t' – Steve

+0

Se si sta eseguendo il piping in' column', non è più necessario il doppio tab dopo il primo campo (presumo che fosse di inserire un valore ampio in quel campo). – chepner

6

se i vostri campi sono scheda separata il seguente script di una riga potrebbe stampare un tavolo con cellulare bordi

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

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