sed はパターンを改行文字に置き換えます。

sed はパターンを改行文字に置き換えます。

httpd.confファイルで、特定の「AllowOverride None」を「AllowOverride All」に置き換えようとしています。

ファイルに同じパターンを持つ複数の行があることを考えると、sedがパターンを置き換えるタイミングを選択する方法がない場合は、複数行のパターンに置き換える必要があると思いました。

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
AllowOverride None

到着する:

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
AllowOverride All

1行を次に置き換えます。

sudo sed -i 's|DocumentRoot "/var/www/html"|DocumentRoot "/var/www/html/test"|' /etc/httpd/conf/httpd.conf

しかし、行が2つ以上の場合はどうすればいいのかわかりません。

ありがとう

ベストアンサー1

sedこれを行う方法はいくつかあります。たとえば、change コマンドを使用します。

sed --in-place '/^AllowOverride All/c\
AllowOverride None\n' httpd.conf

または、s代替を使用する方が良いです。

sed --in-place '/^AllowOverride/s/All/None/'

AllowOverride後者は、「で始まる行の最初のインスタンスを」Allに置き換えますNone

おすすめ記事