#!/bin/bash setglobal indent_level = '"-1'" proc print_indent { for NUM in [$[seq 0 $indent_level]] { echo -ne ' '; } } while read line { match $line { with ('('*')' print_indent echo $line with (')' # lone close bracket setglobal indent_level = $shExpr(' $indent_level - 1 ') print_indent echo $line with (*')' # non-lone print_indent echo $line | sed 's/)$//' setglobal indent_level = $shExpr(' $indent_level - 1 ') print_indent echo ')' with ('('* print_indent setglobal indent_level = $shExpr(' $indent_level + 1 ') echo $line } } <<<"$( sed 's/(/\n(/g' | sed 's/)/)\n/g' )"