sed заменить блок регулярка

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Аватара пользователя
bars
Сообщения: 940
ОС: BSD/LINUX
Контактная информация:

sed заменить блок регулярка

Сообщение bars »

Привет.
Есть много виртаул хостов, в них есть редирект.

Код: Выделить всё

return 301 https://test1.ttt.com$request_uri;
Домен у редиректа разные.
Пытаюсь так изменить и почему-то не получается.

Код: Выделить всё

sed "s/return 301 https:\/\/*./return 301 https:\/\/my.dom.loc/g" /etc/nginx/site/dom0.dom.loc
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 940
ОС: BSD/LINUX
Контактная информация:

Re: sed заменить блок регулярка

Сообщение bars »

Код: Выделить всё

sed "s/return 301 https:\/\/.*\.(com|biz|org|club|net)/return 301 https:\/\/my.dom.loc/g" /etc/nginx/site/dom0.dom.loc
Вроде должно работать, но не работает.
заменить текущий домен в редиректе на новый my.dom.loc
Добавлено (20:04):
сделал.

Код: Выделить всё

sed -E "s/return 301 https:\/\/.*\.(com|biz|org|club|net)/return 301 https:\/\/my.dom.loc/g" /etc/nginx/site/dom0.dom.loc
Хотелось бы без этого колхоза (com|biz|org|club|net)
Добавлено (20:39):

Код: Выделить всё

sed 's/return 301 https:\/\/.*\..*\..*\$/return 301 https:\/\/my.dom.loc\$/g' /etc/nginx/site/dom0.dom.loc
Вот так я думаю правильнее будет.
Добавлено (21:13):
Либо так еще проще, что то голова уже плохо варит, спать пора.

Код: Выделить всё

https:\/\/.*\$/
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 901
ОС: debian, fedora (i3-wm)

Re: sed заменить блок регулярка

Сообщение olecya »

Быстрым взглядом. В двойных кавычках интерпретируется оболочкой ескейп последовательности. Или замените на одинарные или делайте так "\\/" "\\." "\\$" и т. д.
Добавлено (21:25):

Код: Выделить всё

sed 's%return 301 https://[^$]*%return 301 https://my.dom.loc%'
Добавлено (21:30):

Код: Выделить всё

sed 's%\(return 301 https://\)[^$]*%\1my.dom.loc%'
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1380
ОС: Slackware

Re: sed заменить блок регулярка

Сообщение UnixNoob »

Двойные кавычки вам понадобятся, если вы планируете передавать аргументы, в сценарий, на сколько я понимаю. Иначе переменные $1,$2 и т.д оболочка не смогла развернуть.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Ответить