вот еще один способ генерации той же последовательности
$ awk 'BEGIN{for(i=0;i<=20;i++) {k=i%11+1; printf "%s ", (k<7?k:12-k)}; print ""}'
1 2 3 4 5 6 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2
, не уверенный, что то, что вы хотите, просто повторяется в цикле из 11 элементов или нет;трудно сказать на основании ограниченной выборки.
или без awk
$ yes $({ seq 6; seq 5 -1 1; } | paste -sd' ') | head -100 | paste -sd' '
1 2 3 4 5 6 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1 ...
с квадратными скобками
$ awk 'BEGIN{printf "[";
for(i=0;i<=1100;i++) {k=i%11+1; printf "%s ", (k<7?k:12-k)};
printf "]\n"}'
[1 2 3 4 5 6 5 4 3 2 1 1 2 3 4 5 6 ... 5 4 3 2 1 ]
Заполнение этих значений в большой массив не является оптимальнымВы можете написать функцию, которая будет легко возвращать индексированное значение
$ awk 'function k(i,_i) {_i=i%11+1; return _i<7?_i:12-_i}
BEGIN{for(i=0;i<=25;i++) print k(i)}'
в реальном коде, вместо печати вы будете использовать k(i)
.Обратите внимание, что индекс массива начинается с 0.
Примечание: _i
является локальной переменной в функции awk
;вам не нужно использовать синтаксис вызова.