3

httpd.conf ファイルに次の仮想ホストがあります

    <VirtualHost *:80>
    ## could be comments
    could be any line
    could be any line
    could be any line
    </VirtualHost>

    <VirtualHost *:80>
       could be any line
    ## could be comments
    could be any line
    could be any line
    could be any line
    could be any line
    could be any line
    </VirtualHost>

    <VirtualHost *:80>
## may have comments
    ServerName ppp.com
        could be any line
    could be any line
    could be any line
  </VirtualHost>

    <VirtualHost *:443>
   ## could be empty
    ServerName zzz.com
    could be any line
    could be any line
    could be any line
    </VirtualHost>

ServerName がまだセットアップされていないすべての仮想ホストに「ServerName abc.com」を追加しようとしています。

私はsedでそれをやろうとしていたのですが、どこにも行きません..何か助けはありますか?

これは私がこれまでに持っているものです...

sed '/^[ \t]*<VirtualHost/,/^[ \t]*<\/VirtualHost/{
/^ServerName/!{
   /<VirtualHost/{
     /^/a\ServerName abc.com

   }
  }
}' httpd.conf
4

3 に答える 3

1

おそらく awk の方がこのタスクに適していると思います。ここにあるadd-server-name.awk

/<VirtualHost/ { named=0; indent=substr($0,1,match($0,/<VirtualHost/)-1) }
/^[[:blank:]]*ServerName[[:blank:]]*/ { named=1; }
/<\/VirtualHost>/ { if (!named) print indent "ServerName abc.com" }
{ print }

使用法:

awk -f add-server-name.awk httpd.conf
于 2013-04-11T20:33:34.587 に答える