printf saída em execução na próxima linha

3

Eu criei o Bash SS em vi . Minha saída está passando para a linha abaixo dela. Eu sou novo no UNIX, então estou tentando aprender. Minha saída é exibida usando printf .

printf "%-15s %15s %15s %2d\n %2s " $name $days $phone $start $time

A saída é assim, por exemplo

name       days       phone      start 

time name    days       phone      start

time name    days       phone      start 

etc...

Como faço para que todas as cinco variáveis sejam impressas na mesma linha?

    
por user65158 14.04.2014 / 04:03

2 respostas

8

Seu comando:

printf "%-15s %15s %15s %2d\n %2s " $name $days $phone $start $time

Seu problema:

'...\n %2s'

Você está inserindo uma nova linha antes de $time . Pare com isso. Faça:

printf '%-15s %15s %15s %2d %2s\n' \
    "$name" "$days" "$phone" "$start" "$time"
    
por 14.04.2014 / 04:07
2

Além da resposta do @ mikeserv, você pode ver a lista completa de controles de formato para saída de man 1 printf :

   \"     double quote    
   \     backslash    
   \a     alert (BEL)    
   \b     backspace    
   \c     produce no further output    
   \e     escape    
   \f     form feed    
   \n     new line    
   \r     carriage return    
   \t     horizontal tab    
   \v     vertical tab    
   \NNN   byte with octal value NNN (1 to 3 digits)    
   \xHH   byte with hexadecimal value HH (1 to 2 digits)    
   \uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)    

   \UHHHHHHHH
          Unicode character with hex value HHHHHHHH (8 digits)    

   %%     a single %    
   %b     ARGUMENT as a string with '\' escapes interpreted, except that 
          octal escapes are of the form 
   \"     double quote    
   \     backslash    
   \a     alert (BEL)    
   \b     backspace    
   \c     produce no further output    
   \e     escape    
   \f     form feed    
   \n     new line    
   \r     carriage return    
   \t     horizontal tab    
   \v     vertical tab    
   \NNN   byte with octal value NNN (1 to 3 digits)    
   \xHH   byte with hexadecimal value HH (1 to 2 digits)    
   \uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)    

   \UHHHHHHHH
          Unicode character with hex value HHHHHHHH (8 digits)    

   %%     a single %    
   %b     ARGUMENT as a string with '\' escapes interpreted, except that 
          octal escapes are of the form %pre% or %pre%NNN
or %pre%NNN

Você deve ler man <command name> para aprender a usar o comando em qualquer *nix OS.

    
por 14.04.2014 / 04:20