Alinhamento ao imprimir uma série de registros

1

Como posso resolver o problema das tabelas indo para a direita. Eu só quero que seja mostrado em 1 .

Aqui está meu script com o START adicionado. O alinhamento ficou complicado agora:

while IFS="," read f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
do
 printf "START %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %5s" $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12; # ifet the student id
done < records.csv
echo " Press <enter> to return to main menu"
read null

    
por Unixmanix 29.05.2015 / 11:00

2 respostas

1

Você precisa adicionar uma nova linha no final da instrução printf, assim:

             printf "START %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %5s\n" $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12; # ifet the student id

(observe o \n )

    
por 29.05.2015 / 12:43
1

Isso é provavelmente porque você dá apenas 5 posições para o quarto campo, mas pode ter seis caracteres como HARRY1 no seu exemplo:

printf "%10s %10s %10s %5s <...>
                       ^^^ 

No entanto, existe um bom prettificador no GNU / Linux column que seleciona automaticamente a largura da coluna dependendo da entrada dados:

$ cat test.csv
Harry,2
Ed,3
Mary,4
Looooooooongname,8

$ sed 's/,/ /' test.csv | column -t
Harry             2
Ed                3
Mary              4
Looooooooongname  8

$ sed 's/,/ /' test.csv | grep -v Looooooooongname | column -t
Harry  2
Ed     3
Mary   4

Pode ser melhor escolha para você?

    
por 29.05.2015 / 12:03