LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

Какое-то специфическое решение, такие вещи желательно писать универсально: подсчёт открытых минус закрытых [] и когда сравнялось, то печатать CR. Ну вот например:

# счетчик открытых [
declare -i open
while read -d ']' l; do
        # убираем переводы строк
        l=${l//$'\n'/}
        # подсчет количества [ минус одно закрытие на цикл
        o=${l//[^[]/}
        open+=${#o}-1
        # вывод с переводом строки, если открытые все закрылись
        echo -n "$l]"
        [[ open -eq 0 ]] && echo
done

Исправление vodz, :

Какое-то специфическое решение, такие вещи желательно писать универсально: подсчёт открытых минус закрытых [] и когда сравнялось, то удалять CR. Ну вот например:

# счетчик открытых [
declare -i open
while read -d ']' l; do
        # убираем переводы строк
        l=${l//$'\n'/}
        # подсчет количества [ минус одно закрытие на цикл
        o=${l//[^[]/}
        open+=${#o}-1
        # вывод с переводом строки, если открытые все закрылись
        echo -n "$l]"
        [[ open -eq 0 ]] && echo
done

Исходная версия vodz, :

Какое-то специфическое решение, такие вещи желательно писать универсально: подсчёт отырытх минус закрытых [] и когда сравнялось, то удалять CR. Ну вот например:

# счетчик открытых [
declare -i open
while read -d ']' l; do
        # убираем переводы строк
        l=${l//$'\n'/}
        # подсчет количества [ минус одно закрытие на цикл
        o=${l//[^[]/}
        open+=${#o}-1
        # вывод с переводом строки, если открытые все закрылись
        echo -n "$l]"
        [[ open -eq 0 ]] && echo
done