Я запускаю несколько команд подстановки в качестве ядра сценария раскраски для maven . Одна из sed
команд использует регулярное выражение, которое работает в оболочке, как описано здесь . Текущую (не работающую) реализацию можно найти здесь .
Когда я включаю в скрипт один из вариантов команды, происходит другое поведение:
Вариант 1:
$ sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"
Адаптировано к сценарию:
-re "s/WARNING: ([a-zA-Z0-9./\\ :-]+)/${warn}WARNING: \1${c_end}/g" \
Ошибка: оболочка выводит такую же информацию, как если бы я печатал $ sed
. Странный!?
Вариант 2:
$ sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
Адаптировано к сценарию:
-e "s/WARNING: \([a-zA-Z0-9./\\ :-]\+\)/${warn}WARNING: \1${c_end}/g" \
Ошибка:
sed: -e выражение # 7, char 59: недопустимая ссылка \ 1 в правой части команды `s '
-i
(редактировать в опции места) с-re
, в результате чего-ire
(так что-i
было потребляяre
фрагмент в качестве своегоSUFFIX
аргумента и , следовательно, режим расширенного регулярного выражения не быть включен); изменив его, чтобы-i -re
устранить проблему.