Home > bashism > leading zeros in bash scripts

leading zeros in bash scripts

I have a bash script that generates names for binaries, these names include parameters ranging from 2 to 64. I sort these then but due to the nature of alphanumeric sorting, 4 is sorted between 32 and 64 (4 is bigger than 3 but smaller than 6…). So what i need is leading zeros for the sorting to work the way i want it to work. The easiest solution i could come up with is padding zeros c-style using the command line version of printf:

PARAMLIST="2 4 8 16 24 32 40 48 56 64"
for PARAM in $PARAMLIST;
do 
  printf "%02d\n" $PARAM
done

[update by bert]

sort –numeric-sort

solves the sorting issue as well 🙂

Categories: bashism Tags: , ,
  1. bert
    July 18th, 2011 at 19:54 | #1

    When you have to sort something numerical the next time, but don’t have control over the input, than try `sort –numeric-sort`.

  2. stefan
    July 21st, 2011 at 13:28 | #2

    For creating numbers with leading zeros in a script one can use

    PARAMLIST=`/usr/bin/seq -f %02.0f 1 2 64`
    or
    PARAMLIST=`/usr/bin/seq -w 1 2 64`

    …not what posts task is, but maybe helps some other time 😉

  3. September 19th, 2014 at 02:50 | #3

    I’m curious to find out what blog platform you are using?

    I’m having some minor security problems with my latest site and I’d like to
    find something more safe. Do you have any suggestions?

  1. No trackbacks yet.