У меня есть файл конфигурации, и я хочу заменить все строки между двумя строками с помощью powershell. Вот мой код:
$HttpPath = "C:\Oracle\Middleware\Oracle_Home\user_projects\domains\my_domain\config\fmwconfig\components\OHS\ohs1\httpd.conf"
$NewLine = 'Options -Indexes'
$Pattern = '(?<=<Directory />).*?(?=</Directory>)'
(Get-Content -Path $HttpPath -Raw) | ForEach-Object {
$_ -replace $Pattern,$NewLine
} | Set-Content -Path $HttpPath
Вот текст конфигурации файла:
<Directory />
AllowOverride none
Require all denied
</Directory>
Я хочу заменить две строки "Hi" и "Hello" одной строкой "Options -Indexes". Результат должен выглядеть следующим образом:
<Directory />
Options -Indexes
</Directory>
Этот сценарий работает, если содержимое файла выглядит следующим образом:
<Directory /> AllowOverride none Require all denied </Directory>
Тогда вывод будет выглядеть так:
<Directory />Options -Indexes</Directory>
Но как содержимое файла разбивается на отдельные строки, это не работает.