@amorphine

Как экранировать регулярное выражение в bash-скрипте для sed?

Требуется заменить все найденные вхождения по регулярному выражению на :url()

Регулярка
/[:,\s]\s*url\s*\(\s*(?:'(\S*?)'|"(\S*?)"|((?:\\\s|\\\)|\\"|\\'|\S)*?))\s*\)/gi


Общий вид:
npm run bla-bla-bla | sed -r "s/[:,\s]\s*url\s*\(\s*(?:'(\S*?)'|\"(\S*?)\"|((?:\\\s|\\\)|\\\"|\\'|\S)*?))\s*\)/:url()/gi" > file.css


Столкнулся с проблемой - не могу правильно все экранировать, то порчу саму регулярку, то еще что-то. Может быть, такая сложная регулярка нуждается в awk?
Спасибо.
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Обернуть регулярку в $'...' с экранированием одиночной кавычки:
npm run bla-bla-bla | sed -r $'"s/[:,\s]\s*url\s*\(\s*(?:'(\S*?)'|\"(\S*?)\"|((?:\\\s|\\\)|\\\"|\\'|\S)*?))\s*\)/:url()/gi"' > file.css
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы