Sed: правильное экранирование специальных символов

I Я пытаюсь выполнить команду sed для приведенной ниже команды. Я пытаюсь найти v = window.location.search.match в файле и заменить его на

Вот что у меня есть на данный момент:

sed -i.bak 's/v=window.location.search.match/\<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"\>\</script\>/d' myfile.txt

После запустив это, я получаю следующую ошибку:

sed: -e expression #1, char 49: unknown option to `s'

Я не понимаю, где я должен разместить каждый \ для экранирования.

-1
10.11.2016, 00:05
1 ответ

Как указано @Babyy, если ваше выражение содержит символы / , тогда вы можете изменить разделитель sed на то, что выиграет ' t риск может быть обнаружен во входном файле, например | или _

sed -i.bak 's|v=window.location.search.match|<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>|' myfile.txt

Теперь, если вы хотите заменить всю строку, первая часть вашего выражения должна соответствовать всему, начиная с начала строки до конца:

sed -i.bak 's|^.*v=window.location.search.match.*$|<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>|' myfile.txt
1
28.01.2020, 05:10

Теги

Похожие вопросы