Как в 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