комплексная замена Linux - PullRequest
       8

комплексная замена Linux

0 голосов
/ 17 ноября 2009

Я пытаюсь выполнить пакетную замену для / с довольно сложным шаблоном

Пока я нахожу модель как:

find '(' -name '*.php' -o -name '*.html' ')' -exec grep -i -n 'hello' {} +

Строка, которую я хочу заменить, в настоящее время выглядит следующим образом:

<img src="/some/path/to/somewhere/hello" /> 

где путь к изображению меняется, но всегда содержит подстроку 'hello' в конце

Я хотел бы взять путь и выполнить замену следующим образом:

<img src="<?php myfunction('(/some/path/to/somewhere/)'); ?>" /> 

Какой хороший способ это сделать?

Любая помощь будет признательна.

1 Ответ

0 голосов
/ 17 ноября 2009

Заменить -exec grep ..... на

-exec cat '{}' | sed s/<img src="(/some/path/to/somewhere/)hello" />/<img src="<?php myfunction('(\1)(constant)'); ?>" />/ > /tmp/output; mv /tmp/output '{}' ';'

пробелы, символы "и /" в шаблонах поиска и замены sed с обратными слешами, как любит sed.

Например, это будет извлекать / путь /:

echo "<img src=\"/path/hello\"" | sed "s/<img\ src=\"\(\/path\/\)hello/\1/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...