簡體   English   中英

正則表達式匹配並替換或刪除powershell中的多行文本

[英]Regexp match and replace or delete multiple lines of text in powershell

我必須使用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. ```

根據您的示例文本,regEx應該是這樣的:

 $file = "C:\\PowershellScripts\\test.txt" $data = Get-Content $file -Raw $data -replace "# START[\\r\\n\\#\\,\\.\\sA-Za-z]*# STOP","" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM