#1 18.02.2015 14:07:22

1000Mhz
Administrator
Зарегистрирован: 17.08.2014
Сообщений: 816
IP-адрес

Как передать регулярное выражение как параметр?

Не понимаю, в чем тут проблема:
1. есть утилита, обрабатывающая некоторый массив данных с использованием регулярных выражений,
2. регулярное выражение задается так:

.. -e 'some-regex'

Проблема в том, что в виде
.. -e "some-regex"

оно просто не обрабатывается. Естественно, попробовал так:
R=" 'regex' "
.. -e "$R"

но не тут-то было! :) Значит, делаю что-то не так.. Пока решения не нашел((

#2 18.02.2015 14:09:35

kostik87
Administrator
Зарегистрирован: 29.06.2014
Сообщений: 778
IP-адрес

Как передать регулярное выражение как параметр?


$ reg='s/111/222/'
$ echo 111222 | sed -e ${reg}

#3 18.02.2015 14:22:02

1000Mhz
Administrator
Зарегистрирован: 17.08.2014
Сообщений: 816
IP-адрес

Как передать регулярное выражение как параметр?

kostik87, точно, кавычки не нужны вообще!

R='regex'
.. -e $R

Спасибо, решено.

#4 19.02.2015 05:40:08

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Как передать регулярное выражение как параметр?

Quote by 1000Mhz
точно, кавычки не нужны вообще!
вы не правы. Нужны двойные кавычки
[console]sed "$reg"[/console]
а "не нужно" -e и ещё {}.

#5 19.02.2015 08:45:23

1000Mhz
Administrator
Зарегистрирован: 17.08.2014
Сообщений: 816
IP-адрес

Как передать регулярное выражение как параметр?

Quote by drBatty
Нужны двойные кавычки

Да, желательно. Я так всегда и писал раньше, но потом кавычек стало слишком дохрена, и я стал писать без них))) Закавычивать все подряд -тоже перебор, читаемость ухудшается.

#6 19.02.2015 09:11:46

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Как передать регулярное выражение как параметр?

Quote by 1000Mhz
Я так всегда и писал раньше, но потом кавычек стало слишком дохрена, и я стал писать без них
"давно" это сколько дней? *ROFL*

#7 19.02.2015 09:56:09

1000Mhz
Administrator
Зарегистрирован: 17.08.2014
Сообщений: 816
IP-адрес

Как передать регулярное выражение как параметр?

Quote by drBatty
"давно" это сколько дней?

Давно- это года три примерно. Только обычно как-то менее 200 строк и отладка не требовалась :)

#8 19.02.2015 10:10:21

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Как передать регулярное выражение как параметр?

Quote by 1000Mhz
Давно- это года три примерно.
не верю.
Quote by 1000Mhz
Закавычивать все подряд -тоже перебор, читаемость ухудшается.
кавычки ИМХО нужно ставить только если они необходимы в общем случае. Тогда заковыченные строковые литералы грамотный редактор подсвечивает.

Вот ещё пример: заменить везде литерал "Машка", на "Мария Ивановна". А если их Over9000?

Board footer