You can use brace expansion for generating a sequence of numbers and alphabets. printf helps you to display multiple arguments using the same format specifier. For example:

$ echo {1..3}
1 2 3
$ echo {1..2}{a..b}
1a 1b 2a 2b

$ printf '%s\n' apple banana cherry
apple
banana
cherry

Combining the two, you can generate multiple lines of text. Here are some examples:

$ printf '%s\n' id_{3..1}
id_3
id_2
id_1

$ printf '%s\n' item_{100..120..4}
item_100
item_104
item_108
item_112
item_116
item_120

Here's a practical example:

# the string before %.s is repeated based on the number of arguments
$ printf 'x %.s' a b c
x x x 
$ printf -- '- %.s' {1..5}
- - - - - 

# same as: seq 10 | paste -d, - - - - -
$ seq 10 | paste -d, $(printf -- '- %.s' {1..5})
1,2,3,4,5
6,7,8,9,10

$ n=5
$ seq 10 | paste -d, $(printf -- '- %.s' $(seq $n))
1,2,3,4,5
6,7,8,9,10

$ n=2
$ seq 10 | paste -d, $(printf -- '- %.s' $(seq $n))
1,2
3,4
5,6
7,8
9,10

info See this stackoverflow thread for other alternatives, avoiding printf for large numbers, etc.

Video demo:


info See also my Computing from the Command Line ebook.