Can I align variables in a string with echo and bash?

Kiran picture Kiran · Mar 3, 2010 · Viewed 9.2k times · Source

I want to do formatting using echo in shell scripting.

Here is a small code snippet which is giving me the problem:

echo -en "\rFileName    :   $filename   :    $index of $lines Completed"

The $filename is a string with varying length, and this is causing problem with formatting in the terminal. How can I overcome this?

Here's what I mean:

FileName :       a800_102 :    6 of 6 Completed
FileName :       ersf_1024    :    56 of 56 Completed

I would like to have a table format when I display it on the terminal.

Answer

richq picture richq · Mar 3, 2010

Use printf:

printf "\rFileName : %20s : %8d of %8d Completed" $filename $index $lines