#linux #bash #ubuntu #sed
#linux #bash #ubuntu #sed
Вопрос:
Я пытаюсь заменить конкретную ссылку, которая существует на многих html-страницах, на ее версию https. Я пытался:
grep -rl "http://server.iad.liveperson.net/hc/88956865/" ./ | xargs sed -i "s/http://server.iad.liveperson.net/hc/88956865//https://server.iad.liveperson.net/hc/88956865//g"
Когда я делаю это, даже как sudo
, я получаю
sed: couldn't open temporary file ./customers/sedTR3AMu: Permission denied
customers
это только первый каталог в ./
. Итак, я считаю, что он зависает в первом файле, но не уверен, что не так, кроме этого.
Любая помощь приветствуется!
Комментарии:
1. Используйте другой разделитель с
sed
.sed 's_http://server.iad.liveperson.net/hc/88956865/_https://server.iad.liveperson.net/hc/88956865/_g
потому чтоsed
путается, где начинается и заканчивается разделитель.
Ответ №1:
Первое, что вы должны попробовать, это запустить sed
команду как автономную для файла, который, как вы ранее знали, содержит эту строку. У меня такое ощущение, что sed
команда может жаловаться на /
символы…
Вам следует попробовать изменить sed
команду на что-то вроде:
sed -i 's;http://server.iad.liveperson.net/hc/88956865/;https://server.iad.liveperson.net/hc/88956865/;g'
То есть, используя ;
вместо /
в качестве разделителя, поэтому вам не нужно избегать /
каждый раз при использовании
.
Комментарии:
1. Перед буквенными периодами должна стоять обратная косая черта.
Ответ №2:
Пришлось запустить команду, вошедшую в систему как root, потому что sed -i создает временные файлы в / tmp и требует доступа на запись.
Спасибо: Использовал синтаксис jim с точкой с запятой, который отлично работал. ога, мне не нужно было избегать буквальных периодов.