Форум русскоязычного сообщества Ubuntu


Автор Тема: Экранирование спец символов  (Прочитано 708 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Krjd

  • Автор темы
  • Гость
Экранирование спец символов
« : 07 Июль 2016, 00:53:34 »
Добрый день.

нужно заменить в файле все вхождения
require_once($_SERVER['DOCUMENT_ROOT'].'/public_html/'._SAPE_USER.'/sape.php');на
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
Все мои попытки экранировать все символы и скормить это sed'у закончились неудачей.
Кто-нибудь может подсказать альтернативы sed в данном вопросе или способ скормить sed строку, где не нужно экранировать символы ибо экранировать подобные строки очень утомительно.

adawdp

  • Автор темы
  • Гость
Re: Экранирование спец символов
« Ответ #1 : 07 Июль 2016, 06:31:32 »
2016 Jul 06; 11:31 PM; Oakville, ON, Canada.

— Я вообще не специалист, но что-то подобное делал используя переменные… Криво как-то всё было и очень некрасиво, но работало :) … Файл в tmp создавал, cat применял в переменную эту сложную строку со спецсимволами помещал…

— Что-то наподобие вот этого:
https://toster.ru/q/13378
https://forum.ubuntu.ru/index.php?topic=140967.0

— Ну наверное есть уже отработанное решение, это так чтобы тему оживить, самому интересно…

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5665
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Экранирование спец символов
« Ответ #2 : 07 Июль 2016, 10:29:06 »
Как-то так"s|require_once($_SERVER\['DOCUMENT_ROOT'\].'/public_html/'._SAPE_USER.'/sape.php');|require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');|"* совсем уж ничего не экранировать не выйдет ;)
Хотя подход в принципе не верный: надо же только убрать «/public_html»? Давайте grep'нем и посмотрим где встречаетсяgrep '/public_html' data.file
« Последнее редактирование: 07 Июль 2016, 10:36:24 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Krjd

  • Автор темы
  • Гость
Re: Экранирование спец символов
« Ответ #3 : 07 Июль 2016, 12:06:08 »
Azure, я бы использовал второй вариант, вот только файлов много, кода много и он не мой)
Не хочу рисковать. Бекап конечно есть, но вот времени по 3 раза бекап разворачивать не особо. Что-то там не работает, хочется быстро попробовать один вариант и если не получилось вернуть на место и думать дальше.

Первый вариант выглядит куда лучше моих потуг, но всё равно не хватает такой опции что бы строку как есть меняла, а не пыталась там найти какую-то не существующую регулярку.
И..не работает :D
Видимо нужно как-то по хитрому кавычки экранировать или ещё что-то.
Короче похоже быстрее всё скачать и руками в каком-нибудь редакторе с автозаменой сделать. Или нет..файлов многовато...
Пойду тогда на Си накатаю велосипед, запарило.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5665
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: Экранирование спец символов
« Ответ #4 : 07 Июль 2016, 12:56:23 »
D101101, Вы можете неправильно строку писать, вот и не работает(раз ошибку не выдает значит не находит строку) — поэтому я и хотел взглянуть существующие вариантыgrep '/public_html' data.file
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.057 секунд. Запросов: 25.