Вы можете сделать это с помощью POSIX sed
, как описано здесь. Обратите внимание, что это решение применимо к обоим типам показанных вами входных данных. Ограничения: ввод не является многострочным, так как мы используем новые строки в качестве маркеров для эффекта. требуется трансформация.
$ sed -e '
:top
/\[\/quote]/!b
s//\
&/
s/\[quote=/\
\
&/
:loop
s/\(\n\n\)\(\[quote=.*\)\(\[quote=.*\n\)/\2\1\3/
tloop
s/\n\n.*\n\[\/quote]//
btop
' input.txt