История изменений
Исправление HolyBoy, (текущая версия) :
Спасибо за помощь!
Твой скрипт был не совсем тем, что требовалось, т.к. вид обрабатываемого файла не постоянный, количество параметров в секции может меняться. Показанный пример — это только одно из возможных состояний.
Однако, посмотрев приведённые варианты, я родил вот такое:
#!/bin/bash
F="$1"
RES="$2"
i=0
unset vals
while read line; do
if [ "$(expr "$line" : '\(\/\)')" == "/" ]; then
(for j in $(seq 0 $((${#vals[*]} - 1))); do
echo "${vals[$j]}"
done) | sort
unset vals
echo "$line"
i=0
else
vals[$i]="$line"
((i++))
fi
done < "$F"
(for j in $(seq 0 $((${#vals[*]} - 1))); do
echo "${vals[$j]}"
done) | sort
Этот вариант уже делает то, что надо. Он, конечно, не особо чистый, надо, например, повторяющийся код вынести в функцию, но это уже мелочи.
Исходная версия HolyBoy, :
Спасибо за помощь!
Твой скрипт был не совсем тем, что требовалось, т.к. вид обрабатываемого файла не постоянный, количество параметров в секции может меняться. Показанный пример — это только одно из возможных состояний.
Однако, посмотрев приведённые варианты, я родил вот такое:
#!/bin/bash
F="$1"
RES="$2"
i=0
unset vals
while read line; do
if [ "$(expr "$line" : '\(\/\)')" == "/" ]; then
(for j in $(seq 0 $((${#vals[*]} - 1))); do
echo "${vals[$j]}"
done) | sort
unset vals
echo "$line"
i=0
else
vals[$i]="$line"
((i++))
fi
done < "$F"
(for j in $(seq 0 $((${#vals[*]} - 1))); do
echo "${vals[$j]}"
done) | sort
Этот вариант уже делает то, что надо.