У меня есть следующий код:Замена блока текста с отступами по СЭДУ
echo -e ' aaa\nddd\nddd\n bbb' | sed -re ':x; N; $!b x; s/(^|\n)(\s*)(aaa)\n(.*?)\n\2(bbb)(\n|$)/\1\2\3\n\2ccc\n\2\5\6/g'
Этот код заменяет все между ааа & БББОМ с сссом. Кроме того, она использует те же отступы он находит:
fff
aaa
ddd
ddd
bbb
fff
будут обработаны в
fff
aaa
ccc
bbb
fff
Но есть проблема. Я не могу портировать его использовать свои переменные:
sed -ire ":x; N; $!b x; [email protected](^|\n)(\s*)(${START})\n(.*?)\n\2(${STOPSEQREG})(\n|$)@\1\2\3\n\2${ENUMARRAY[$i]}\n\2\5\[email protected]" $f
START, STOPSEQREG & ENUMARRAY [я] содержит /, *, пробелы:,;, + и -. Также элементы массива содержат \ n. Символы/& * экранируются с помощью \.
Ошибка, показываемая при запуске «Плохая обратная связь».
Может кто-нибудь, пожалуйста, помогите мне?
Заранее спасибо.
P.S. Примеры переменных:
START: /* R+ Testy */ (with escaped/& *)
STOPSEQREG: /* R- */ (with escaped/& *)
ENUARRAY[i]: case AAA:\n break;
Вы можете предоставить сценарий, в котором вы используете 'sed' с различными вариантами. – nu11p01n73R
Здесь полный скрипт: http://paste.org.ru/?6iwb4l Вот тестовые файлы: источник: http://paste.org.ru/?yu4yiq и цель: http://paste.org.ru/?tlzelb –