LinuxForum.Fans
Тема

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

Автор: 1000Mhz 8 сообщений 1544 просмотров
18.02.2015 17:07 · отредактировано #414729

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

text
.. -e 'some-regex'

Проблема в том, что в виде

text
.. -e "some-regex"

оно просто не обрабатывается. Естественно, попробовал так:

text
R=" 'regex' "
.. -e "$R"

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

18.02.2015 17:09 #414730
text

$ reg='s/111/222/'
$ echo 111222 | sed -e ${reg}
18.02.2015 17:22 · отредактировано #414731

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

text
R='regex'
.. -e $R

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

19.02.2015 08:40 #414795

"1000Mhz" написал:
точно, кавычки не нужны вообще!
вы не правы. Нужны двойные кавычки
[console]sed "$reg"[/console]
а "не нужно" -e и ещё {}.
19.02.2015 11:45 · отредактировано #414831
"drBatty" написал:
Нужны двойные кавычки

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

19.02.2015 12:11 #414844

"1000Mhz" написал:
Я так всегда и писал раньше, но потом кавычек стало слишком дохрена, и я стал писать без них
"давно" это сколько дней? *ROFL*
19.02.2015 12:56 #414872
"drBatty" написал:
"давно" это сколько дней?

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

19.02.2015 13:10 #414876

"1000Mhz" написал:
Давно- это года три примерно.
не верю.

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

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