ошибка sed: "недопустимая ссылка 1 на RHS команды' s'"
я запускаю несколько команд подстановки в качестве ядра раскрасить скрипт для maven.
Один из sed команды использует регулярное выражение, которое работает в оболочке как здесь обсуждается. Текущая (не работающая) реализация может быть найдена здесь.
когда я включаю один из вариантов команды в скрипт разному происходит:
вариант 1:
$ sed -re "s/([a-zA-Z0-9./ :-]+)//g"
адаптировано к сценарию:
-re "s/WARNING: ([a-zA-Z0-9./ :-]+)/${warn}WARNING: ${c_end}/g"
ошибка: оболочка выводит ту же информацию, как если бы я набрал $ sed. Странно!?
Вариант 2:
$ sed -e "s/([a-zA-Z0-9./ :-]+)//g"
адаптировано к сценарию:
-e "s/WARNING: ([a-zA-Z0-9./ :-]+)/${warn}WARNING: ${c_end}/g"
ошибка:
sed: - e выражение #7, char 59: недопустимая ссылка 1 на команду' s' РГО
3 ответов:
Не нужно на самом деле захватить, да? т. е. для варианта 2:
-r -e "s/WARNING: (\([a-zA-Z0-9./\ :-]\+\))/${warn}WARNING: ${c_end}/g" \(Примечание: непроверено)
без аргумента-r обратные ссылки (например, \1) не будут работать.
эта ошибка является общей для скобок, которые не экранируются. Побег из них и попробуйте еще раз.
например:
/^$/b :loop $!{ N /\n$/!b loop } s/\n(.)//gследует экранировать с обратными косыми чертами перед каждой скобкой:
/^$/b :loop $!{ N /\n$/!b loop } s/\n\(.\)//g
вам нужно бежать
/после.sed -e "s/\([a-zA-Z0-9.\/\ :-]\+\)//g"или если вы не хотите беспокоиться о побеге, используйте
|sed -e "s|\([a-zA-Z0-9./\ :-]\+\)||g"EDIT:
sed -e "s|WARNING: \([a-zA-Z0-9.-/\ :]+\)|${warn}WARNING: ${c_end}|g"
Comments