URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID15
Нить номер: 3707
[ Назад ]

Исходное сообщение
"vi не простая замена строк"

Отправлено merfi , 30-Ноя-11 14:23 
vi замена текста
Все очень просто со словами
А как быть если заменяемое значение  - путь к файлу
Н-р
%s/home/vasya//usr/local/vasya/g
Выдает ошибку E4888 Trailing characters
Скажу сразу , что испробовал все (экранирование спецсимволов и т.д )


Содержание

Сообщения в этом обсуждении
"vi не простая замена строк"
Отправлено Andrey Mitrofanov , 30-Ноя-11 15:26 
Во всяких sed-ах прокатывает
s!home/vasya!/usr/local/vasya!g

А что говорит поэтому поводу man vi ??


"vi не простая замена строк"
Отправлено merfi , 30-Ноя-11 15:36 
> Во всяких sed-ах прокатывает
> s!home/vasya!/usr/local/vasya!g
> А что говорит поэтому поводу man vi ??

Да он говорит что
%s/что/на что/g


"vi не простая замена строк"
Отправлено me , 30-Ноя-11 16:03 
>> Во всяких sed-ах прокатывает
>> s!home/vasya!/usr/local/vasya!g
>> А что говорит поэтому поводу man vi ??
> Да он говорит что
> %s/что/на что/g

почитайте на тему эскйеп-последовательностий.
всмысле, чем-бы мне заэскйпить "/"?


"vi не простая замена строк"
Отправлено merfi , 30-Ноя-11 17:04 
>>> Во всяких sed-ах прокатывает
>>> s!home/vasya!/usr/local/vasya!g
>>> А что говорит поэтому поводу man vi ??
>> Да он говорит что
>> %s/что/на что/g
> почитайте на тему эскйеп-последовательностий.
> всмысле, чем-бы мне заэскйпить "/"?

"/" заэкспейсивается  "\"
пробовал и так . Ошибка сохраняется


"vi не простая замена строк"
Отправлено Andrey Mitrofanov , 30-Ноя-11 17:13 
>> А что говорит поэтому поводу man vi ??
> Да он говорит что
> %s/что/на что/g

Дубина...

If you are substituting with a "from" or "to" part that includes a slash, you
need to put a backslash before it.  A simpler way is to use another character
instead of the slash.  A plus, for example:

    :s+one/two+one or two+

Но, да, "не man? нет, не man".


"vi не простая замена строк"
Отправлено merfi , 30-Ноя-11 17:16 
>[оверквотинг удален]
>> Да он говорит что
>> %s/что/на что/g
> Дубина...
> If you are substituting with a "from" or "to" part that includes
> a slash, you
> need to put a backslash before it.  A simpler way is
> to use another character
> instead of the slash.  A plus, for example:
>  :s+one/two+one or two+

> Но, да, "не man? нет, не man".

Так я уже делал.
%s/\/home/vasya/\/usr/local/vasya/g


"vi не простая замена строк"
Отправлено merfi , 30-Ноя-11 17:17 
>[оверквотинг удален]
>> Да он говорит что
>> %s/что/на что/g
> Дубина...
> If you are substituting with a "from" or "to" part that includes
> a slash, you
> need to put a backslash before it.  A simpler way is
> to use another character
> instead of the slash.  A plus, for example:
>  :s+one/two+one or two+

> Но, да, "не man? нет, не man".

backslash экранирует нормальный слэш в любом регулярном выражении.
Я сразу написал , что символами экранирования пользовался


"vi не простая замена строк"
Отправлено merfi , 30-Ноя-11 17:28 
>[оверквотинг удален]
>> Дубина...
>> If you are substituting with a "from" or "to" part that includes
>> a slash, you
>> need to put a backslash before it.  A simpler way is
>> to use another character
>> instead of the slash.  A plus, for example:
>>  :s+one/two+one or two+

>> Но, да, "не man? нет, не man".
> backslash экранирует нормальный слэш в любом регулярном выражении.
> Я сразу написал , что символами экранирования пользовался

Все ! Вопрос решен ! Всем спасибо за содействие


"vi не простая замена строк"
Отправлено Анонимище , 30-Ноя-11 23:20 
>[оверквотинг удален]
>>> If you are substituting with a "from" or "to" part that includes
>>> a slash, you
>>> need to put a backslash before it.  A simpler way is
>>> to use another character
>>> instead of the slash.  A plus, for example:
>>>  :s+one/two+one or two+

>>> Но, да, "не man? нет, не man".
>> backslash экранирует нормальный слэш в любом регулярном выражении.
>> Я сразу написал , что символами экранирования пользовался
> Все ! Вопрос решен ! Всем спасибо за содействие

Экранировать надо каждый прямой слэш, а не только первый


"vi не простая замена строк"
Отправлено Andrey Mitrofanov , 01-Дек-11 09:51 
---------vvvvvvvvvvvvvvvvvvvvvvv
>>>>  :s+one/two+one or two+

-----------^^^^^^^^^^^^^^^^^^
>>>> Но, да, "не man? нет, не man".
>> Все ! Вопрос решен ! Всем спасибо за содействие

На здоровье!

> Экранировать надо каждый прямой слэш, а не только первый

Нет, блин, __НАДО__ другой разделитель аргументов использовать.