bashprintfxargsseq

piping seq to printf for number formatting


I'm trying to print the following pattern using printf and seq:

0000
0001
0002
0003

My problem is once I use:

seq 0 10 | xargs printf %04d

all my output is formatted into the same line likeso:

0000000100020003

I still can't get the hang of using xargs. How do I use it correctly in this case?


Solution

  • The printf command does not output a line break if you don't ask it to. Try:

    seq 0 10 | xargs printf '%04d\n'
    

    Note that you can achieve the same with just seq, since it allows specifying a printf-style format:

    seq -f %04g 0 10