Строка SED со специальными символами, разделенными подстановочными знаками - PullRequest
0 голосов
/ 11 июня 2018

Есть проблемы с седом.Я сидел так:

sed -i '' 's#\<script src\=\"http\:\/\/widget\.blah\.com\/js\/sis_some_widget.*.class\=\"sis\-some\-widget\"\>\<\/div\>#newblah.com#g' lol.sql . 

, который должен заменить весь код скрипта подстановочным знаком между двумя частями кода.Дело в том, что подстановочный знак отличается для каждого кода скрипта (на многих страницах WordPress).Единственными общими частями являются <script src="http://widget.blah.com/js/sis_some_widget.js? и class="sis-some-widget"></div>

Помогите мне выяснить, почему этот sed не работает, и как я могу предположить, что sed строка с подстановочными знаками и многими специальными символами.

Код выглядит как

<script src="http://widget.blah.com/js/sis_some_widget.js?MANY MANY SPECIAL CHARACTERS and letters class="sis-some-widget"></div>

1 Ответ

0 голосов
/ 04 сентября 2018

Вы добавляете обратную косую черту там, где они вам не нужны.Если вы используете «#» в качестве разделителя, единственными символами, которые вам нужно экранировать, являются точки в имени домена.

'\ <', '\ =', '-' и т. Д. Не являются допустимыми символьными escape-символами, поэтому sed интерпретирует эти обратные слеши как буквенные символы. </p>

Ваше выражение должно быть:

's#<script src="http://widget\.blah\.com/js/sis_some_widget.*class="sis-some-widget"></div>#newblah.com#g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...