ошибка 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' РГО


871   3  

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

    Ничего не найдено.