BASH Tips&Tricks #000A: Генерация числовых последовательностей

BASH
Для генерации числовых последовательностей в BASH удобно пользоваться командой seq.
Попробую подкрепить справедливость данного утверждения соответствующими примерами.
Итак, чтобы сгенерировать простейшую последовательность от 1 до 12-ти, выполните:

seq 12

Заметьте, что по умолчанию последовательность начинается с единицы.
Разумеется, мы можем указать и обе границы (минимум и максимум) последовательности:

seq 0 12

И вдвойне приятно, что можно указать даже шаг последовательности (в примере шаг будет равен 3-м):

seq 0 3 12

А вдруг нам нужно сгенерировать выровненную по количеству знаков последовательность, в которой более «короткие» числа будут дополнены соотв. количеством нулей слева?
Нет ничего проще: используйте опцию -w!

seq -w 0 3 12

Если же должна быть жёстко фиксирована символьная «ширина» генерируемых чисел, при этом «ширина» максимального из них совсем не обязательно должна быть равна фиксированной (запросто может быть и меньше), то делаем так:

seq -f '%04g' 0 3 12

В результате выполнения последнего примера получим:

0000
0003
0006
0009
0012


Thats all i want to say :)

P.S. Настоятельно не рекомендую использовать seq с параметром -f при не дефолтном IFS. Вернее, даже так: если уж вы меняете IFS, то старайтесь восстановить его значение как можно скорее.

2 комментария

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.