Замените все субдомены в файле с другим доменным именем с помощью sed и подстановочным знаком

Замените все имена субдомена в файле с другим доменным именем с помощью подстановочного знака.

Исключая: В файле у меня есть следующие домены:

example1.domain1.com    
example2.domain1.com 
example3.domain1.com

Я хочу заменить эти имена субдомена domain2.com. Я пытался использовать ниже команды sed. Это хорошо работает, если размер файла является небольшим. Но для большого файла похоже, что выполнение команды никогда не заканчивается. Я хочу использовать подстановочный знак здесь, так как текст, который будет заменен, имеет то же доменное имя т.е. domain1.com.

sed -i s/.*.domain1.com/domain2.com/g test.txt
1
задан 14 April 2018 в 19:51

3 ответа

Если Вы используете .*.domain1.com как Ваш шаблон, Вы будете essiantially соответствовать нежелательным символам, потому что . средства любой символ.
Вы хотите заменить только "словесные символы" (буквы ASCII, цифры или подчеркивание) использование \w+.

Как нормальный sed regex не знает о +, удостоверьтесь, что добавили -r для sed использовать расширенный regex.

Также удостоверьтесь, что Вы используете кавычки! Иначе * мог бы быть интерпретирован ударом.
И необходимо выйти . в шаблоне иначе это будет также соответствовать любому символу.

sed -i.bak -r 's/\w+\.domain1\.com/domain2.com/g' file
4
ответ дан 3 December 2019 в 06:37

Использовать sed -i 's/domain1/domain2/' infile.

Если Вы хотите заменить *.domain1.com затем изменение как:

sed 's/.*domain1/domain2/' infile

Удостоверьтесь при первой попытке, не используют -i который заменит оперативный в Вашем файле.

1
ответ дан 3 December 2019 в 06:37

Открытый файл в редакторе vi. Затем введите ниже упомянутого режима онлайн команды редактора vi:

#vi file_name 
example1.domain1.com
example2.domain1.com 
example3.domain1.com

:%s/domain1/domain2/g  hit enter now

Готово!!

Примечание: domain1 уже является существующей строкой. domain2 является новой строкой.

0
ответ дан 3 December 2019 в 06:37

Другие вопросы по тегам:

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