Возврат каретки в сценариях Unix - PullRequest
1 голос
/ 15 января 2012

У меня есть такой файл

<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>

Я устал, но линейная каретка не работает должным образом. Я даже пытался без удачи.

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>

Чего мне не хватает?

Большое спасибо,

Ответы [ 2 ]

4 голосов
/ 15 января 2012

Символ конца строки текстового файла Unix \n, ASCII 0x0A (новая строка / перевод строки).\r 0xOD - это возврат каретки.

Замените \r на \n в выражении sed, и вам будет хорошо.

2 голосов
/ 15 января 2012

В одну сторону с 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...