Изменение имени сервера в файле OpenVPN с помощью sed

У меня есть следующий файл:

proto udp resolv-retry infinite nobind #Single line of those bellow, I've added multiple for variations of it remote fi.server.com 50505 remote us-cityone.server.com 5050 remote uk-citytwo.server.com 50500 remote us-citythree.server.com 56546 remote sweden.server.com 6546546 rest of config file.. 

Позвольте мне быть более ясным, это файл conf OpenVPN. Я хочу заменить только ту линию, которая начинается с remote servername 5555имя сервера другое.

Я добавил несколько строк remote servername 5555 только для примера, потому что все они представляют варианты, которые могут возникнуть.

Я хочу сопоставить только средний столбец, fi.server.com , us-newyorkcity.server.com т. Д. И заменить его с помощью sed с другим именем.

Почему такой шаблон не работает?

 sed -i.bak 's/\w+(-|\.)\.?\w+\.?\.com/g' filename 

Я тоже пробовал это.

 sed -i.bak 's/\w+(-|\.)\.?\w+\.?\.\w+/g' filename 

Обратите внимание, что из примера us-newyorkcity.server.com только часть server.com является статической. Отдых изменяется.

Спасибо за помощь!

One Solution collect form web for “Изменение имени сервера в файле OpenVPN с помощью sed”

Предполагая переменную NEWNAME с именем, которое вы хотите вставить, вы должны иметь возможность использовать следующее:

 sed -i.bak "s|^\(remote \)\([^ ]*\)\([ ]*[0-9]*\)|\1$NEWNAME\3|" filename 
  • Как напечатать n-ю строку после совпадения / пустые строки
  • awk + как печатать каждую секцию строки (IP) после первого имени хоста
  • sed - извлечь значение путем подстановки из первой строки, соответствующей второй регулярной линии, следующей строке с 1-м регулярным выражением
  • Как вставить текст перед первой строкой файла?
  • заменяя содержимое одного файла другим
  • Как заменить символ во всех файлах .php внутри папки на OS X?
  • Есть ли способ обнаружить нулевые байты (␀, NUL, \ 0) в sed?
  • Удалять файлы старше 5 дней в UNIX (дата в имени файла, а не в метке времени)
  • Как сгруппировать группу строк на основе информации из первой строки?
  • Удалить пробелы после определенного символа
  • Regex & Sed / Perl: совместить слово, которому НЕ предшествует другое слово
  • Linux и Unix - лучшая ОС в мире.