How do I print some text in bash and pad it with spaces to a certain width?

后端 未结 3 1554
春和景丽
春和景丽 2020-12-14 14:25

I\'m echoing some text in a bash script with a variable in it, and want to pad that variable so it will always have the appropriate ammount of spaces to the right to keep th

相关标签:
3条回答
  • 2020-12-14 14:46

    Use - to left align a field.

    printf "Echoing random number %-5s   [ OK ]" $RAND_NUM
    

    Alternatively, if you're on a Red Hat Linux system there are predefined functions that will print out green OK and red FAILED prompts (the ones you see during bootup):

    #!/bin/bash
    
    . /etc/init.d/functions
    
    echo -n "Frobbing widget:"
    frob_widget && echo_success || echo_failure
    echo
    
    0 讨论(0)
  • 2020-12-14 14:46

    Collect all your lines in one var or text file then pipe it through column command. So this (my example file /tmp/columns.txt)

    Echoing random number 1080 [ OK ]
    Echoing random number 44332356 [ OK ]
    Echoing random number 34842 [ OK ]
    Echoing random number 342 [ OK ]
    

    became this

    Echoing  random  number  1080      [  OK  ]
    Echoing  random  number  44332356  [  OK  ]
    Echoing  random  number  34842     [  OK  ]
    Echoing  random  number  342       [  OK  ]
    

    Example command: cat /tmp/columns.txt | column -t

    0 讨论(0)
  • 2020-12-14 15:06

    To expand on sobi3ch's answer: if you concat the strings with a deliminator (I use tilda (~)), you can then call column with the -s param to split the text at that point.

    Apologies for the feline abuse:

    foo.txt :
    
    Echoing random number 1080~[ OK ]
    Echoing random number 1080~[ OK ]
    Echoing random number 1080~[ Failed ]
    

    then :

    cat foo.txt | column -s'~'
    
    Echoing random number 1080        [ OK ]
    Echoing random number 1080        [ OK ]
    Echoing random number 1080        [ Failed ]
    
    0 讨论(0)
提交回复
热议问题