Как в Linux сделать цикл для диапазона строк?

Есть такой скрипт. Как можно сделать это все в цикле? Файл test.txt может содержать больше 100 строк.

cat test1.txt | sed -n 1,5p | jq -Rn \
    --arg v1 / \
    --arg v3 server1 \
    '[inputs] | map({"{#NAME}" : $v1, "{#LIST}": ., "{#MARK}": $v3}) | { "data": . }'

cat test1.txt | sed -n 6,11p  | jq -Rn \
    --arg v1 / \
    --arg v3 server1 \
    '[inputs] | map({"{#NAME}" : $v1, "{#LIST}": ., "{#MARK}": $v3}) | { "data": . }'

cat test1.txt | sed -n 12,17p  | jq -Rn \
    --arg v1 / \
    --arg v3 server1 \
    '[inputs] | map({"{#NAME}" : $v1, "{#LIST}": ., "{#MARK}": $v3}) | { "data": . }'

Ответы (1 шт):

Автор решения: PotroNik

Поставил комментарии по набору команд, стоит то что в пунктах либо изменяемое
Для изменения количество обрабатываемых строк стоит изменить переменную step

#Объявляем файл с которым будем работать
file_data=./test1.txt
#Устанавливаем шаг по сколько строк выводим
step=10 
#Переменная начала строки
oldi=1
#Просто генератор итераций цикла
counter=0
#Максимальная строка, после которой останавливаем выполнение
max_line=`wc -l < ${file_data}`
#Начало цикла
for ((i=$step;i<=$(($max_line+$step));i=i+$step)); do
#Повышаем генератор работы цикла
counter=$((counter+1))

Либо:

#Выводим по 10 строк добавляя в начала текст и номер итерации цикла
sed -n ${oldi},${i}p $file_data | sed "s/^/TEST${counter}: /"

Либо:

#Передаем партию строк на обработку в данном случае jq
sed -n ${oldi},${i}p $file_data | jq -Rn \
    --arg v1 / \
    --arg v3 server1 \
    '[inputs] | map({"{#NAME}" : $v1, "{#LIST}": ., "{#MARK}": $v3}) | { "data": . }'

#запоминаем строку с которой начнется следующий вывод
oldi=$(($i+1))
done
→ Ссылка