1

複数のApacheサーバーのセットアップのスクリプト作成を開始するために、.sedファイルの作成に取り組んでいます。このegrepでうまく機能する.confファイルのデフォルトのウェブマスターの電子メールアドレスと一致するようにsedを取得しようとしています。ただし、sed を使用して試してみると、代わりの検索と置換でエラーは返されませんが、置換も行われません。同じ egrep コマンドをもう一度実行して、これをテストします。

egrep -o '\b[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+(\.[A-Za-z]{2,4})?\b' /home/test/httpd.conf

戻り値

admin@your-domain.com
root@localhost
webmaster@dummy-host.example.com

私が使用しようとしているsedコマンドは

sed -i '/ServerAdmin/ s/\b[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+(\.[A-Za-z]{2,4})?\b/MY_ADMIN_ADDRESS@gmail.com/g' /home/test/httpd.conf

実行後、egrep を再度実行して結果を確認しようとすると、何も置き換えられなかったことを示す同じ 3 つの電子メール アドレスが返されます。

4

2 に答える 2

1

2 つのツールが同じ正規表現構文を使用すると仮定しないでください。で置き換えを行う場合は、 to test -not をsed使用してください。コマンドのように簡単に使用できます: .sedegrepsedgrepsed -ne '/pattern/p'

于 2013-02-11T01:32:47.363 に答える
0

-r オプションを使用して拡張正規表現を使用する必要があることを sed に通知し、次のように sed コマンドを作成する必要があります。

sed -ir '/ServerAdmin/ s/\b[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+(\.[A-Za-z]{2,4})?\b/MY_ADMIN_ADDRESS@gmail.com/g' /home/test/httpd.conf

欠落 していたアドレスServerName

于 2013-02-11T01:05:33.067 に答える