piping seq to printf for number formatting

Paolo picture Paolo · Oct 3, 2013 · Viewed 28.4k times · Source

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?

Answer

Joni picture Joni · Oct 3, 2013

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