Замените все имена субдомена в файле с другим доменным именем с помощью подстановочного знака.
Исключая: В файле у меня есть следующие домены:
example1.domain1.com
example2.domain1.com
example3.domain1.com
Я хочу заменить эти имена субдомена domain2.com. Я пытался использовать ниже команды sed. Это хорошо работает, если размер файла является небольшим. Но для большого файла похоже, что выполнение команды никогда не заканчивается. Я хочу использовать подстановочный знак здесь, так как текст, который будет заменен, имеет то же доменное имя т.е. domain1.com.
sed -i s/.*.domain1.com/domain2.com/g test.txt
Если Вы используете .*.domain1.com
как Ваш шаблон, Вы будете essiantially соответствовать нежелательным символам, потому что .
средства любой символ.
Вы хотите заменить только "словесные символы" (буквы ASCII, цифры или подчеркивание) использование \w+
.
Как нормальный sed
regex не знает о +
, удостоверьтесь, что добавили -r
для sed
использовать расширенный regex.
Также удостоверьтесь, что Вы используете кавычки! Иначе *
мог бы быть интерпретирован ударом.
И необходимо выйти .
в шаблоне иначе это будет также соответствовать любому символу.
sed -i.bak -r 's/\w+\.domain1\.com/domain2.com/g' file
Использовать sed -i 's/domain1/domain2/' infile
.
Если Вы хотите заменить *.domain1.com
затем изменение как:
sed 's/.*domain1/domain2/' infile
Удостоверьтесь при первой попытке, не используют -i
который заменит оперативный в Вашем файле.
Открытый файл в редакторе vi. Затем введите ниже упомянутого режима онлайн команды редактора vi:
#vi file_name
example1.domain1.com
example2.domain1.com
example3.domain1.com
:%s/domain1/domain2/g hit enter now
Готово!!
Примечание: domain1 уже является существующей строкой. domain2 является новой строкой.