我有一个像这样的文件
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
我想实现这个目标:
<VirtualHost *:80>
ServerAdmin info@domain.com
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
我厌倦了这一点,但是线路支架无法正常工作。 我甚至没有运气地试过\ r \ n。
sudo sed -i "s/webmaster@localhost/info@domain.com\rServerName domain.com \rServerAlias www.domain.com/" /etc/apache2/sites-available/domain
我在这之间得到了这个奇怪的角色:
<VirtualHost _default_:443>
ServerAdmin info@domain.com ^MServerName domain.com ^MServerAlias www.domain.com
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
我错过了什么?
非常感谢,
答案 0 :(得分:4)
Unix文本行结束字符为\n
,ASCII 0x0A(新行/换行符)。 \r
0xOD是回车。
在您的sed表达式中将\r
替换为\n
,您应该很高兴。
答案 1 :(得分:2)
使用sed
(GNU版本)的一种方式:
script.sed
的内容:
## Match line with string 'serveradmin' ignoring case.
/serveradmin/I {
## Append text after this line.
a\
## Literal text to append until a line not ending with '\'
\tServerName domain.com\
\tServerAlias www.domain.com
}
运行脚本:
sed -f script.sed infile
结果:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>