7行をgrepして一致後にテキストを置き換えるにはどうすればよいですか?

7行をgrepして一致後にテキストを置き換えるにはどうすればよいですか?

一致したら、7行をgrepし、この7行のコンテキストを置き換えて同じファイルに保存しようとします。

たとえば、

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

MaxRequestsPerChild 置き換えられた値を使いたいです5000

私は以前試しました:

grep "IfModule prefork.c" httpd.conf -A7 | /bin/sed -nE "/\bMaxRequestsPerChild\b/ s/[0-9]+/50/"

しかし幸運はありません。

ベストアンサー1

これはSEDソリューションです。

sed '/<IfModule prefork.c>/,/MaxRequestsPerChild/s/MaxRequestsPerChild.*/MaxRequestsPerChild 5000/' apacheconf

モジュール名を一致させた後、次の「MaxRequestsPerChild」行を5000の値に置き換えるように動作します。他のすべてのモジュールについては「MaxRequestsPerChild」を無視します。

おすすめ記事