grepとsedを使用して、特定の既存の行の後に新しい行を追加しますか?

grepとsedを使用して、特定の既存の行の後に新しい行を追加しますか?

grep&を使用してファイル内のテキストを見つけて変更できることを聞きましたが、sed自分で機能させるのに十分な理解はありません。

設定ファイルがあります(lighttpd.conf)新しい行を追加する必要があります。

server.modules  += (
        "mod_setenv"
)
setenv.add-response-header = ( "X-UA-Compatible" => "IE=edge",
                               "X-Frame-Options" => "Deny" )
setenv.add-environment = ("LC_ALL" => "en_US.UTF-8")
$HTTP["url"] =~ "config.js$" {
        setenv.add-response-header = ( "Cache-Control" => "no-store, no-cache, must-revalidate, post-check=0, pre-check=0" )
}

ssl.cipher-list = "!aNULL:kECDH+AESGCM:ECDH+AESGCM:RSA+AESGCM:kECDH+AES:ECDH+AES:RSA+AES"
ssl.dh-file = "/etc/lighttpd/dhparams.pem"

$HTTP["url"] =~ "^/restapi" {
    proxy.server = ( "" =>
                    ((
                      "host" => "127.0.0.1",
                      "port" => "9202"
                    ))
                   )
}

url.rewrite-if-not-file = ( "^/ui(?!\.\w+$)" => "/index.html",
"^/login" => "/index.html" )

server.stream-response-body = 2

#------HTTPPORT_CONFIG START------
#------HTTPPORT_CONFIG END------

ssl.ca-file = "/etc/lighttpd/ca-cert.pem"この行の後に次の行を追加する必要がありますssl.dh-file = "/etc/lighttpd/dhparams.pem"

ssl.cipher-list = "!aNULL:kECDH+AESGCM:ECDH+AESGCM:RSA+AESGCM:kECDH+AES:ECDH+AES:RSA+AES"
ssl.dh-file = "/etc/lighttpd/dhparams.pem"
ssl.ca-file = "/etc/lighttpd/ca-cert.pem"

$HTTP["url"] =~ "^/restapi" {
    proxy.server = ( "" =>

私はRegExを理解しようとして数時間を費やしましたが、ssl.dhファイルでその行を見つけるために必要な文字列を見つけることはできませんし、その後に新しい行を挿入する方法もわかりません。

誰でも私を助けることができればとても感謝します。

ベストアンサー1

私が見るのが唯一の難しい部分は、パターンと代替文字列にスラッシュが含まれていることです。したがって、スラッシュをエスケープしたくない場合は、%sed exなどの他の区切り文字を設定する必要があります。

sed '
\%^ssl.dh-file = "/etc/lighttpd/dhparams.pem"%a\
ssl.ca-file = "/etc/lighttpd/ca-cert.pem"
' lighttpd.conf

おすすめ記事