В удаленном сервере я могу выполнить эту команду:
sed -i '/address/c\address xx.xx.xx.xx' /myfile
заменять любую строку, содержащую address
с address xx.xx.xx.xx
в /myfile
Однако от моей локальной машины, эта команда не работает
ssh root@ip sed -i '/address/c\address xx.xx.xx.xx' /myfile
Это дает следующую ошибку:
sed: can't read xx.xx.xx.xx: No such file or directory
Как решить эту проблему?
Вы предотвращаете расширение на локальной оболочке, но необходимо сохранить все до команды для выполнения, sed
в этом случае, на обеих оболочках.
Кавычка эти sed
команда для выполнения:
ssh root@ip "sed -i '/address/c\address xx.xx.xx.xx' /myfile"
В сущности, любой метод заключения в кавычки по току сделал бы также, но использующий двойные кавычки как вышеупомянутое будет более простым и более чистым.
Заменять u должно использовать sed таким образом:
sed -i 's/^.*address/address xx.xx.xx.xx/' yourfile
Этот regex должен найти "адрес" в Вашем файле и заменить его для "адреса xx.xx.xx.xx".