Regexp сопоставлять и заменять или удалять несколько строк текста в powershell - PullRequest
0 голосов
/ 11 июня 2019

Я должен использовать Power Shell для удаления блока текста с известными первой и последней строкой. Как мне это сделать?

Сначала я попытался сначала сопоставить весь текстовый блок, и это работало ... пока кто-то не изменил средние строки. Теперь я пытаюсь использовать какое-то регулярное выражение. Этот блок всегда начинается со строки "# START" и заканчивается строкой "# STOP".

Я пишу стандартное регулярное выражение, обрабатывающее нужный текст, я использовал https://regexr.com/ для его проверки.

    (Get-Content .\file.conf -Raw) | % {
        $_ -replace "# START(.*\n)*# STOP", ''
    } | Set-Content .\file.conf

Когда я пытаюсь использовать его из PowerShell, как показано выше, он ничего не соответствует, и я понятия не имею, почему. Есть ли лучшее решение моей проблемы?

Вот пример содержимого файла.

# Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
# Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

# START
# Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
# Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 

Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 

# STOP

# Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ```

1 Ответ

0 голосов
/ 12 июня 2019

Согласно вашему примеру текст regEx должен быть таким:

$file = "C:\PowershellScripts\test.txt"    
$data = Get-Content $file -Raw    
$data -replace "# START[\r\n\#\,\.\sA-Za-z]*# STOP",""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...